首页 > 解决方案 > 使用列表中的名称重命名列

问题描述

例如我有一个名字列表:

name_list = ['a', 'b', 'c']

和3个数据框:

>> df1
>>    k   l   m
   0  12  13  14
   1  13  14  15

>> df2
>>    o   p   q
   0  10  11  12
   1  15  16  17

>> df3
>>    r   s   t
   0  1   3   4
   1  3   4   5

我想要做的是将每个数据框的第一列替换为 name_list 中的每个名称。因此,a 将替换 k,b 将替换 o,c 将替换 r。

输出将是:

>> df1
>>    a   l   m
   0  12  13  14
   1  13  14  15


>> df2
>>    b   p   q
   0  10  11  12
   1  15  16  17

>> df3
>>    c   s   t
   0  1   3   4
   1  3   4   5

我可以手动完成,但如果有最好的方法会更好。谢谢

标签: pythonpandas

解决方案


我完全同意@ALollz 但你可以尝试类似

df1 = pd.DataFrame([[1,2,3]], columns=['k', 'l', 'm'])
df2 = pd.DataFrame([[1,2,3]], columns=['o', 'p', 'q'])
df3 = pd.DataFrame([[1,2,3]], columns=['r', 's', 't'])

name_list = ['a', 'b', 'c']

for index, name in enumerate(name_list, 1):
    df = pd.eval('df{index}'.format(index=index))
    df.rename(
        columns = {
            df.columns[0]: name,
        }, inplace=True)

推荐阅读