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