动态地将列添加到pandas数据帧

时间:2016-02-22 22:42:57

标签: python pandas dataframe

我有一个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)

为了让它起作用,我需要更改什么?

2 个答案:

答案 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']不存在而引发错误,可迭代就是列名,所以传递这个键就行了