python - 使用 yaml 文件重命名 Pandas 数据框列

标签 python pandas yaml rename

有人听说可以将 yaml 文件传递​​给 python 脚本来重命名 pandas 数据框中的列。但我不知道该怎么做,也不确定是否发现了有用的东西。

例如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)和最好的方法是什么?

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

最佳答案

您的示例似乎不是合法的 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

关于python - 使用 yaml 文件重命名 Pandas 数据框列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49814768/

相关文章:

python - 在 Python 中画线对

python - 如何使用 nlargest 为数据框中的前 N ​​个值分配/更改值?

python - 如何执行存储为字符串的 bool 逻辑,最好不使用 eval()?

pandas - Python folium GeoJSON map 不显示

python - 获取值是 Pandas 数据框中的值的列名

ruby-on-rails - 如何从 Rails I18n 中的 yml 文件中检索所有翻译

python-3.x - PyYaml 将 '9:00' 解析为 int

python - pandas groupby 计算字符串在列上的出现次数

python - 为什么域驱动设计似乎只在 C# 和 Java 等静态语言中流行?

python - 在 Python 3.2 中,如何使用 while 循环打印字符串,其中字母之间有间隔(在同一行)?