Python 3.x 大熊猫的百分比变化

Python 3.x 大熊猫的百分比变化,python-3.x,pandas,Python 3.x,Pandas,我有如下数据帧 Date ACH BABA BIDU CEA CHA CTRP EDU HNP 0 2000-06-30 $1.00 $3.00 $1.00 $0.00 $0.00 $0.00 $0.00 $0.00 1 2000-07-03 $3.00 $2.00 $6.20 $1.50 $0.00 $0.00 $0.00 $-0.48 2 2000-07-04

我有如下数据帧

      Date         ACH   BABA   BIDU    CEA    CHA   CTRP    EDU    HNP  
0     2000-06-30  $1.00  $3.00  $1.00  $0.00  $0.00  $0.00  $0.00  $0.00   
1     2000-07-03  $3.00  $2.00  $6.20  $1.50  $0.00  $0.00  $0.00 $-0.48   
2     2000-07-04  $5.00  $6.00  $3.00  $0.00  $0.00  $0.00  $0.00  $0.00 
我正在尝试使用以下公式计算每种方法的百分比变化:

df_vals = df[[ticker for ticker in tickers]].pct_change()
但是,我得到以下错误

TypeError: unsupported operand type(s) for /: 'str' and 'str'
我假设我得到这个错误,因为我有列标题,所以它不能计算字符串。然后我尝试添加shift(可能也错了)


这将返回相同的错误。谢谢您的帮助。

您需要先删除
$
并将其强制转换为
浮动
s:

import pandas as pd

s = '''\
Date        ACH   BABA   BIDU    CEA    CHA   CTRP    EDU    HNP  
2000-06-30  $1.00  $3.00  $1.00  $0.00  $0.00  $0.00  $0.00  $0.00   
2000-07-03  $3.00  $2.00  $6.20  $1.50  $0.00  $0.00  $0.00 $-0.48   
2000-07-04  $5.00  $6.00  $3.00  $0.00  $0.00  $0.00  $0.00  $0.00'''

# Recreate sample dataframe
df = pd.read_csv(pd.compat.StringIO(s),sep='\s+')

# Set index date (to not include) and remove all $
df = df.set_index('Date').replace('\$', '', regex=True).astype(float)

# Apply pct change and reset index
df = df.pct_change().reset_index()

print(df)
返回:

         Date       ACH      BABA      BIDU       CEA  CHA  CTRP  EDU  \
0  2000-06-30       NaN       NaN       NaN       NaN  NaN   NaN  NaN   
1  2000-07-03  2.000000 -0.333333  5.200000       inf  NaN   NaN  NaN   
2  2000-07-04  0.666667  2.000000 -0.516129 -1.000000  NaN   NaN  NaN   

        HNP  
0       NaN  
1      -inf  
2 -1.000000  

当OP要求所有栏目时,我删除了标记。谢谢你的帮助
df[[ticker for ticker in tickers]]
必须在那里,因为代码是更大类的一部分,这是阅读的一部分。我还忘了我在前面的类中有一个代码
pd.options.display.float_format='${:,.2f}.
format,该类将$符号添加到我的所有输出中。不管怎样,现在一切似乎都好了,谢谢你!
         Date       ACH      BABA      BIDU       CEA  CHA  CTRP  EDU  \
0  2000-06-30       NaN       NaN       NaN       NaN  NaN   NaN  NaN   
1  2000-07-03  2.000000 -0.333333  5.200000       inf  NaN   NaN  NaN   
2  2000-07-04  0.666667  2.000000 -0.516129 -1.000000  NaN   NaN  NaN   

        HNP  
0       NaN  
1      -inf  
2 -1.000000