高效地对列表/配对的数据框进行重新排序

鞭子

我有效率问题。本质上,我有一个充满列表的数据框。每个列表都包含一个值和一个描述该值的字符串(我认为列表格式是对配对进行排序的最简单方法)。我需要分别对每行中的值进行重新排序,其中最高值在左侧,最低值在右侧。我已经找到了解决方案,但是鉴于我是一个较新的程序员,我想知道您是否认为有一种更快的方法可以执行此操作而无需遍历索引。请随时提供任何反馈。我唯一的要求是最终的解决方案是一个数据帧,在该数据帧中,值后面紧跟着它的字符串描述符(字符串描述符可以在其自己的相邻列中,而不必在列表中)。

启动DF:

import pandas as pd
import numpy as np
master_stop = pd.DataFrame([[[56,'Support'],[58, 'MA']],
                            [[24.4, 'Support'],[23.3,'MA'],[25,'MA']]],
                           ['Symbol_1','Symbol_2']).fillna(np.NaN)
master_stop

Out[2]: 
                        0           1         2
Symbol_1    [56, Support]    [58, MA]       NaN
Symbol_2  [24.4, Support]  [23.3, MA]  [25, MA]

我希望改进的排序方法:

def sort_df():
    for index in master_stop.index:
        master_stop.loc[index] = master_stop.loc[index].sort_values(ascending=False).values

DF排序:

sort_df()
master_stop
Out[3]: 
                 0                1           2
Symbol_1  [58, MA]    [56, Support]         NaN
Symbol_2  [25, MA]  [24.4, Support]  [23.3, MA]
我想要一片T骨牛排

使用stacksort_valuessort_indexunstack可以做的工作。不是一行,但是如果你这样做

master_stack = master_stop.stack().sort_index(level=0,ascending=[True])
master_stop = (pd.Series(data = master_stack.sort_values(ascending=False).sort_index(level=0,ascending=[True]).values,
                         index = master_stack.index)
                 .unstack())

然后master_stop将按预期排序

                 0                1           2
Symbol_1  [58, MA]    [56, Support]         NaN
Symbol_2  [25, MA]  [24.4, Support]  [23.3, MA]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

高效地将列从数据框转换为字典列表

如何基于Pandas数据框中的列表对索引行进行重新排序

根据列表对熊猫数据框进行排序

如何搜索数据框并相应地对每个框进行排序?

安全高效地修改dask数据框

R:对数据框中的行进行重新排序

在熊猫数据框中以升序对节点进行重新排序

根据列均值对数据框的列进行重新排序

在R中逐行对数据框的列进行重新排序

在R中逐行对数据框的列进行重新排序

使用匹配对数据框进行排序时,行被删除

通过数据框进行高效搜索

如何循环数据框列以迭代地对数据框进行排序

对列表框中的 ObservableCollection<Class> 数据进行排序

在数据框的列内对列表的值进行排序

如何通过列表中的值对数据框进行排序

使用参考列表对多索引数据框进行排序

按列表大小而不是AZ对熊猫数据框进行排序

在R中的列表中对数据框进行排序

对熊猫数据框中的行子集进行重新排序(重新索引)

如何高效地重新计算大量数据的值?

根据列表对列进行排序,然后对数据框中的另一列进行排序

重新排序复杂的数据列表

以编程方式对数据框进行重新排序,而不是对其进行子集化

如何按每个数据框中的列值对列表中的数据框进行排序?

熊猫数据框:对数据框中的列表列进行排序

高效地将行添加到数据框

高效地将Pandas数据框写入Google BigQuery

如何按每个列表元素中数据框的大小对列表重新排序?