我从这里借用这个例子。我有一个这样的数据框:
# Import pandas package
import pandas as pd
# Define a dictionary containing ICC rankings
rankings = {'test': ['India', 'South Africa', 'England',
'New Zealand', 'Australia'],
'odi': ['England', 'India', 'New Zealand',
'South Africa', 'Pakistan'],
't20': ['Pakistan', 'India', 'Australia',
'England', 'New Zealand']}
# Convert the dictionary into DataFrame
rankings_pd = pd.DataFrame(rankings)
# Before renaming the columns
print(rankings_pd)
test odi t20
0 India England Pakistan
1 South Africa India India
2 England New Zealand Australia
3 New Zealand South Africa England
4 Australia Pakistan New Zealand
Run Code Online (Sandbox Code Playgroud)
现在假设我想更改第一列和第二列的名称。这就是我正在尝试的:
rankings_pd[rankings_pd.columns[0:2]].columns = ['tes_after_change', 'odi_after_change']
print(rankings_pd[rankings_pd.columns[0:2]].columns)
Index(['test', 'odi'], dtype='object')
Run Code Online (Sandbox Code Playgroud)
但这似乎返回了完全相同的列名,而不是改变它们。
只需使用rename()方法并将dictionary旧值和新值作为列参数中的键值对传递:-
rankings_pd=rankings_pd.rename(columns={'test':'tes_after_change','odi':'odi_after_change'})
Run Code Online (Sandbox Code Playgroud)
编辑按@sammywemmy:
您可以使用匿名函数扩展这个想法:
rankings_pd.rename(columns= lambda df: f"{df}_after_change" if df in ("test", "odi") else df)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |