重命名几个数据框的列

时间:2019-04-27 11:39:44

标签: python

下面的代码,我有多个具有相同结构的数据框,并想更改列名。

import pandas as pd

data_1 = [[1, 'tom', 10], [2, 'nick', 15], [3, 'juli', 14]] 
data_2 = [[1, 'tom', 10], [2, 'nick', 15], [3, 'juli', 14]]  
data_3 = [[1, 'tom', 10], [2, 'nick', 15], [3, 'juli', 14]]  

df_1 = pd.DataFrame(data_1, columns = ['number', 'Name', 'Age']) 
df_2 = pd.DataFrame(data_2, columns = ['number', 'Name', 'Age']) 
df_3 = pd.DataFrame(data_3, columns = ['number', 'Name', 'Age']) 

df_1 = df_1.set_index('number', inplace = True)
df_2 = df_2.set_index('number', inplace = True)
df_3 = df_3.set_index('number', inplace = True)

df_list = [df_1, df_2, df_3]

for df in df_list :
    df = df.columns['New_name', 'New_Age']

此代码返回:

AttributeError: 'list' object has no attribute 'columns'

当我使用我的真实数据时

AttributeError: 'NoneType' object has no attribute 'columns'

使用上面的MWE。

谢谢

1 个答案:

答案 0 :(得分:1)

代替这些:

df_1 = df_1.set_index('number', inplace = True)
df_2 = df_2.set_index('number', inplace = True)
df_3 = df_3.set_index('number', inplace = True)

只能这样做:

df_1.set_index('number', inplace = True)
df_2.set_index('number', inplace = True)
df_3.set_index('number', inplace = True)

.set_index()是inplace方法,返回None,但在适当位置修改了对象。

此外,在for循环内,而不是

df = df.columns['New_name', 'New_Age']

执行此操作:

df.columns = ['New_name', 'New_Age']