【发布时间】:2021-10-21 14:52:14
【问题描述】:
我有一个数据框并进行了一些特征工程,现在想更改列名。
如果我做一个新的任务,我知道如何改变它们,但我想用方法链来做。我尝试了以下(rename 行)但它不起作用。我怎么能写出来让它工作?
df = pd.DataFrame({'ID':[1,2,2,3,3,3], 'date': ['2021-10-12','2021-10-16','2021-10-15','2021-10-10','2021-10-19','2021-10-01'],
'location':['up','up','down','up','up','down'],
'code':[False, False, False, True, False, False]})
df = (df
.assign(date = lambda x: pd.to_datetime(x.date))
.assign(entries_per_ID = lambda x: x.groupby('ID').ID.transform('size'))
.pivot_table(values=['entries_per_ID'], index=['ID','date','code'],
columns=['location'], aggfunc=np.max)
.reset_index()
#.rename(columns=lambda x: dict(zip(x.columns, ['_'.join(col).strip() if col[1]!='' else col[0] for col in x.columns.values])))
)
这里可行,但我不想这样写。
df.columns = ['_'.join(col).strip() if col[1]!='' else col[0] for col in df.columns.values ]
【问题讨论】:
-
从源代码来看,
rename分别作用于每一层。您不能连接不同的级别。 -
当使用函数作为重命名的参数时,该函数需要列名作为参数,而不是数据框。然后将该函数单独应用于每个名称,因此无法识别分组名称。
标签: python pandas dataframe multiple-columns