gpt4 book ai didi

python - 有效地重新排序列表/配对的数据帧

转载 作者:行者123 更新时间:2023-12-01 08:42:41 25 4
gpt4 key购买 nike

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

启动 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]

最佳答案

使用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]

关于python - 有效地重新排序列表/配对的数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53436907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com