【发布时间】:2021-11-21 04:04:28
【问题描述】:
我有一个包含 3 列的数据框。
| Code | Volume | Trade Value |
|---|---|---|
| Apple | 500 | 1000 |
| Amazon | 1000 | 500 |
| 250 | 750 | |
| Samsung | 100 | 1500 |
首先,我想按升序对卷列进行排序: False 表示从最大到最小。然后,创建名称为“Volume Order”的新列,并给出编号作为排序编号。其次,我想对 Trade Value 升序排序: False 表示从大到小。之后,创建名为“交易订单”的新列,并给出数字作为排序编号。但是,当我对交易值进行排序时,排序的交易量列的顺序会根据交易量顺序发生变化。最后,我有 2 个已排序的列和 2 个已排序的列。最后,我想通过对最多 2 个单独的列进行排序来排序并创建一个新的最后一列。(Volume Order- Trade Order)。
预期产出(当数量和交易价值按顺序排序时;
| Code | Volume Order | Trade Order |
|---|---|---|
| Samsung | 4 | 1 |
| Apple | 2 | 2 |
| 3 | 3 | |
| Amazon | 1 | 4 |
最终输出
| Code | Max Ordered Number | Final Sorted Number |
|---|---|---|
| Samsung | 4 | 1 |
| Amazon | 4 | 2 |
| 3 | 3 | |
| Apple | 2 | 4 |
注意:如果它们是相同的最大订购数,则交易价值将更重要,以较大的一个的压轴表示。例子;三星 4-4。但三星拥有最大的贸易订单。这就是为什么它作为最终排序数字较大的原因。
当我尝试这段代码时;我做不到。你能帮忙解决这个问题吗?
ordered = volume_df.sort_values(by=['Volume'], ascending=False,ignore_index=True)
ordered['Volume Order'] = ordered.index+1
ordered = trade_value_df.sort_values(by=['Trade Value'], ascending=False,ignore_index=True)
ordered['Trade Order'] = ordered.index+1
【问题讨论】:
-
第一个问题很努力!但是你能提供一个最小的例子来帮助我们重现代码吗?所以我们不必自己创建数据框
-
谢谢。我的数据框位于上面。如果您将代码复制到此示例中,我可以使用它。我真的需要帮助
-
"When I try this code; I can't make it"是什么意思?
-
您可以添加一些代码向我们展示您如何创建
volume_df和trade_value_df:) -
这是问题的数据框。
pd.DataFrame({'Code' : ['Apple', 'Amazon', 'Facebook', 'Samsung'],'Volume' : [500, 1000, 250, 100],'Trade Value' : [1000, 500, 750, 1500]})