下面的代码,我有多个具有相同结构的数据框,并想更改列名。
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。
谢谢
答案 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']