使用yaml文件重命名Pandas数据帧列

时间:2018-04-13 10:22:23

标签: python pandas yaml rename

A听说过可以将yaml文件传递给python脚本以重命名pandas dataframe中的列的地方。但我不知道该怎么做,也不确定我是否发现了一些有用的东西。

例如,yaml:

mappings:
    new_column_name1: [old_name_1, old_name_2, old_name_3, old_name_4], 
    new_columns_name2: [old_name_5, old_name_6, old_name_7, old_name_8]

df:

old_name1  old_name_6
    1           4
    3           6
    6           31

是否可以使用这样的yaml文件重命名列(每个列名称显示在列表[old_name_1, old_name_2, old_name_3, old_name_4]中重命名为new_column_name1),最佳方式是什么?

我知道我没有提供我尝试过的任何代码,但我真的不知道。 此外,欢迎任何其他关于在多个数据帧中重命名大量列的良好实践的建议。

1 个答案:

答案 0 :(得分:1)

你的例子似乎不是合法的YAML。相反,它应该是这样的:

mappings:
    new_column_name1: 
        - old_name_1 
        - old_name_2 
        - old_name_3 
        - old_name_4

等等。

在任何情况下,如果您安装pyaml,您可以使用以下内容:

from pyaml import yaml

d = yaml.load(open('foo.yaml', 'r'))['mappings']
cols = []
for c in df.columns:
    cols.append(c)
    for k, v in d.items():
        if c in v:
            cols[-1] = k
            break
df.columns = cols