Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pct_更改方法在数据帧中不起作用_Python_Python 3.x_Pandas - Fatal编程技术网

Python pct_更改方法在数据帧中不起作用

Python pct_更改方法在数据帧中不起作用,python,python-3.x,pandas,Python,Python 3.x,Pandas,使用以下代码,我试图检查数值列的百分比变化: import pandas as pd df = pd.read_csv('./data.txt') df.pct_change(1) data.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,

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

import pandas as pd

df = pd.read_csv('./data.txt')
df.pct_change(1)
data.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_变更方法?删除非数字列(在本例中为日期列)重新运行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
,而不是普通的
索引(字符串)。

这将允许您对索引执行日期时间算法,以及

你知道我正积极地想把你列入熊猫名单。。。如果你不停地提供答案,我该怎么做?我不得不投票了。看,我看到你很快就出来了。我在leader board上的日子看起来已经屈指可数了:)@unutbu所以索引列被忽略pct_change method这就是为什么不会抛出错误的原因?
DataFrame。pct_change
计算数据框所有列的百分比变化。该指数保持不变。