python - 使用python中的递归将YAML分层数据导出到CSV文件
问题描述
以下是我的 yaml 文件中的数据,列表和字典的组合。样本数据:
innings:
- 1st innings:
team: Kings XI Punjab
deliveries:
- 0.1:
batsman: RS Bopara
bowler: JA Morkel
non_striker: IK Pathan
runs:
batsman: 1
extras: 0
total: 1
- 0.2:
batsman: IK Pathan
bowler: JA Morkel
non_striker: RS Bopara
runs:
batsman: 1
extras: 0
total: 1
- 2nd innings:
team: Chennai Super Kings
deliveries:
- 0.1:
batsman: PA Patel
bowler: IK Pathan
extras:
wides: 1
non_striker: ML Hayden
runs:
batsman: 0
extras: 1
total: 1
- 0.2:
batsman: PA Patel
bowler: IK Pathan
non_striker: ML Hayden
runs:
batsman: 0
extras: 0
total: 0
我希望将数据放入如下数据框中。
Delivery, Batsman, Bowler, non_striker, runs_batsman, runs_extras, extras_type, Runs_total, player_out, mode_of_dismissal, fielders_involved
0.1, RS Bopara, JA Morkel, IK Pathan, 1, 0, NA(if extras are 0), 1, NA, NA, NA
下面是我找到的用于展平数据的代码,但我无法根据需要进行修改,我需要使用递归本身来完成代码。(我已经想到使用循环,但这看起来并不高效)
def flatten(d,sep="_"):
obj = collections.OrderedDict()
def recurse(t,parent_key=""):
if isinstance(t,list):
for i in range(len(t)):
recurse(t[i], parent_key + sep + str(i) if parent_key else str(i))
elif isinstance(t,dict):
for k,v in t.items():
recurse(v, parent_key + sep + str(k) if parent_key else str(k))
else:
obj[parent_key] = t
recurse(d)
return obj
解决方案
推荐阅读
- python - 如何检查输入是否在字典的值中?
- c - C中的浮点值查询
- react-native - 如果多次使用,反应原生色轮不起作用
- html - 选项 CSS 不工作 - 用户代理样式表
- javascript - 是否可以遍历一组图像并同时生成所有图像
- java - 在java中验证函数中的输入以避免重复数据,而不是默认为0的非条目(无数据库)
- angular - Angular 访问父模板元素 ref
- php - Postgress between 没有提供准确的数据
- javascript - 如何摆脱 ReferenceError: window is not defined in Java Script,这是什么意思?
- angularjs - 无法让 Angularjs 指令显示在视图中