gpt4 book ai didi

python - pct_change 方法在 Pandas 数据框中不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 13:32:38 26 4
gpt4 key购买 nike

使用下面的代码,我试图检查数字列的百分比变化:

import pandas as pd

df = pd.read_csv('./data.txt')
df.pct_change(1)

数据.txt :

,AAPL,MSFT,^GSPC
2000-01-03,3.625643,39.33463,1455.219971
2000-01-04,3.319964,38.0059,1399.420044
2000-01-05,3.3685480000000005,38.406628000000005,1402.109985
2000-01-06,3.077039,37.12008,1403.449951

但是上面的代码返回错误:

/opt/conda/lib/python3.5/site-packages/pandas/core/ops.py in na_op(x, y)
1187 if np.prod(xrav.shape) and np.prod(yrav.shape):
1188 with np.errstate(all='ignore'):
-> 1189 result[mask] = op(xrav, yrav)
1190 elif hasattr(x, 'size'):
1191 result = np.empty(x.size, dtype=x.dtype)

TypeError: unsupported operand type(s) for /: 'str' and 'str'

如何使用 pct_change 方法?删除非数字列(在本例中为日期列)重新运行 pct_change 然后重新组合数据列?

最佳答案

日期的第一列是字符串。 df.pct_change(1) 在尝试对这些字符串执行除法时引发 TypeError

避免错误的一种方法是在解析 CSV 时将日期作为索引:

import pandas as pd

df = pd.read_csv('./data.txt', index_col=[0])
print(df.pct_change(1))

产量

                AAPL      MSFT     ^GSPC
2000-01-03 NaN NaN NaN
2000-01-04 -0.084310 -0.033780 -0.038345
2000-01-05 0.014634 0.010544 0.001922
2000-01-06 -0.086538 -0.033498 0.000956

您可能还想将日期字符串解析为日期:

df = pd.read_csv('./data.txt', index_col=[0], parse_dates=[0])

然后索引将是 DatetimeIndex 而不是普通的 Index (字符串)。这将允许您对索引进行日期时间运算,并且 interpolate valuesbased on time .

关于python - pct_change 方法在 Pandas 数据框中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44346394/

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