【发布时间】:2021-12-18 20:56:40
【问题描述】:
我有一个 csv 文件,其中包含用于创建 yaml 文件的配置信息(最终所需的结果)。首先,我试图将 csv 文件的每一行转换为 Dictionary,然后我可以使用 yaml.dump(Created_Dictionary) 轻松地将 Dictionary 转换为 yaml 文件
示例输入文件(test.csv):
fieldname|type|allowed|coerce
field_A|String|10,20,30|to_str
field_B|Integer||to_int
我使用 pandas 库的源代码:
df = pd.read_csv("test.csv", "|")
df_to_dict = df.to_dict(orient='records')
print(df_to_dict) # print the dictionary
test_yaml = yaml.dump(df_to_dict)
print(test_yaml) # print the yaml file
我得到的字典输出(df_to_dict):
[{'fieldname': 'field_A', 'type': 'String', 'allowed': '10,20,30'}, {'fieldname': 'field_B', 'type': 'Integer', 'allowed': nan}]
我得到 yaml (test_yaml) 的输出:
- allowed: 10,20,30
fieldname: field_A
type: String
- allowed: .nan
fieldname: field_B
type: Integer
所需的字典输出 (df_to_dict) 是:
[
{'field_A':
{'type': 'String', 'allowed': '10,20,30', 'coerce': to_str}
},
{'field_B':
{'type': 'String', 'allowed': '', 'coerce': to_int}
}
]
所需的 yaml 输出 (test_yaml) 是:
field_A:
type: String
allowed:
- '10'
- '20'
- '30'
coerce: to_str
field_B:
type: Integer
allowed:
coerce: to_int
我看到变量 df_to_dict 是一个字典列表。我是否必须遍历每个列表项,然后为每一行构建字典?我不理解正确的方法。任何帮助表示赞赏。
【问题讨论】:
-
您所需的字典输出包含 CSV 中不可用的信息。您从哪里获得所有额外的字段/数据?
-
如果你不需要或者不需要 Pandas,Python 的标准 csv 库和 DictReader 类可以处理这个问题;下面的解决方案。
标签: python pandas csv dictionary yaml