如果满足条件,则在Pandas数据框中重命名列

时间:2019-04-16 19:43:56

标签: python pandas dataframe rename

我试图找出是否可以在满足某些条件的情况下重命名列标题。我有一个熊猫数据框:

df_desired = pd.DataFrame(data, columns = ['ID', 'Name', 'Year', 'FallScoreNEW', 'WinterScoreNEW', 'SpringScoreNEW'])

print(df_desired)
   ID Name  Year  FallScoreNEW  WinterScoreNEW  SpringScoreNEW
0   1  Joe  2018             5               7               9

我想做的是,如果一列中包含“ Fall”,“ Winter”或“ Spring”,则将字符串“ NEW”添加到列标题的末尾。这是所需的输出结果。

df.columns.str.contains('Fall')
df.columns.str.contains('Winter')
df.columns.str.contains('Spring')

我能够获得每个术语的布尔值数组,但是如果找到'Fall','Winter'或'Spring',则无法弄清楚如何替换列标题。请注意,我将不知道实际的列标题,只知道它们将包含“秋天”,“冬季”或“春季”

我得到布尔值数组的方式是在这里:

{{1}}

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

您可以将rename与lambda一起使用:

df.rename(lambda x: x + 'NEW' if any(k in x for k in keys) else x, axis=1)

   ID Name  Year  FallScoreNEW  WinterScoreNEW  SpringScoreNEW
0   1  Joe  2018             5               7               9

如果您不希望只是为了重命名操作而返回数据的副本,这也可以用作列表理解。

df.columns = [x + 'NEW' if any(k in x for k in keys) else x for x in df]
df

   ID Name  Year  FallScoreNEW  WinterScoreNEW  SpringScoreNEW
0   1  Joe  2018             5               7               9