我有一个pandas数据框,其中包含列名' a'' b',...,' n'。
对于每个列,我想显示列的每日更改,并将数据框扩展为包含:' a',' b',...,' n',' a_daily',' b_daily',...,' n_daily_change'。
我尝试了以下代码(它给出了KeyError:' column_names'):
for column_names in df:
df[str(column_names) + '_daily'] = df['column_names'].pct_change(freq=1).fillna(0)
为了让它起作用,我需要更改什么?
答案 0 :(得分:0)
使用变量名称而不是字符串:
for column_name in df:
df[column_name + '_daily'] = df[column_name].pct_change(freq=1).fillna(0)
名称是导入的。使用单数形式:column_name
。
答案 1 :(得分:0)
您只需要将列名称作为字符串传递:
for column_names in df:
df[str(column_names) + '_daily'] = df[column_names].pct_change(freq=1).fillna(0)
此外,我认为您无需再次将列名转换回str
:
for column_names in df:
df[column_names + '_daily'] = df[column_names].pct_change(freq=1).fillna(0)
应该有用。
因为df['column_names']
不存在而引发错误,可迭代就是列名,所以传递这个键就行了