Jak*_*ake 5 python rename dataframe pandas
我试图弄清楚如果满足某些条件是否可以重命名列标题。我有一个熊猫数据框:
import pandas as pd
data = [[1,'Joe', '2018', 5,7,9]]
df = pd.DataFrame(data, columns = ['ID', 'Name', 'Year', 'FallScore', 'WinterScore', 'SpringScore'])
print(df)
ID Name Year FallScore WinterScore SpringScore
0 1 Joe 2018 5 7 9
Run Code Online (Sandbox Code Playgroud)
我想做的是,如果列中包含“秋季”、“冬季”或“春季”,则将字符串“NEW”添加到列标题的末尾。这是所需的输出。
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
Run Code Online (Sandbox Code Playgroud)
我能够获取每个术语的布尔值数组,但无法弄清楚如果找到“秋季”、“冬季”或“春季”,如何替换列标题。请注意,我不知道实际的列标题,我只知道它们将包含“秋季”、“冬季”或“春季”
我获取布尔值数组的方法如下:
df.columns.str.contains('Fall')
df.columns.str.contains('Winter')
df.columns.str.contains('Spring')
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
您可以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
Run Code Online (Sandbox Code Playgroud)
如果您不希望仅为重命名操作返回数据副本,这也可以用作列表理解。
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6539 次 |
| 最近记录: |