gpt4 book ai didi

python - 对 pandas 中的列进行排序只是返回相同的未排序信息

转载 作者:行者123 更新时间:2023-12-01 02:42:31 26 4
gpt4 key购买 nike

我正在使用 pandas_datareader 来提取雅虎股票数据并计算百分比变化。现在我想获取这些百分比变化值并从最低到最高对它们进行排序,并将排序后的数据放入新列中。正在创建列,但值未排序,只是复制过来。

import pandas_datareader as pdr
Ticker = 'SQ'

result = pdr.get_data_yahoo(Ticker)
result = result.drop(['Open','High','Low','Volume','Adj Close'], axis=1)
result['pct change'] = (result.pct_change(1,'pad'))*100
result['Sorted'] = result['pct change'].sort_values(inplace = False)

输出的前几行看起来像这样

                Close  pct change    Sorted
Date
2017-07-17 26.190001 NaN NaN
2017-07-18 26.590000 1.527297 1.527297
2017-07-19 26.360001 -0.864983 -0.864983
2017-07-20 26.389999 0.113801 0.113801
2017-07-21 26.850000 1.743088 1.743088
2017-07-24 26.750000 -0.372439 -0.372439

我对编码很陌生,所以我假设这很简单,但我无法通过谷歌搜索找到任何有用的东西

最佳答案

鉴于 DataFrame 上的索引是 DatetimeIndex,我认为将排序值添加为同一 DataFrame 中的列不一定有意义 - 现在排序值与您的索引不正确对应.

更好的解决方案是将排序值 Series 与 DataFrame 分开保存。

<小时/>

话虽这么说,您在 sort_values 之后看不到任何结果的原因是排序结果保留了原始 DataFrame 索引。然后,当您将排序后的系列添加为另一列时,排序值上的原始索引会将排序后的值放回到 DataFrame 中的原始顺序。

所以你的问题正是因为 Pandas 知道你排序值的原始索引。

要解决此问题,您可以在设置列之前对已排序的值reset_index

result['Sorted'] = result['pct change'].sort_values().reset_index(drop=True)

关于python - 对 pandas 中的列进行排序只是返回相同的未排序信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45526684/

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