我有一个来自json的字典,其中我通过循环汇总每个通过API回答的个人的调查结果,并希望将其转换为使用“ title”值作为列的数据框,然后将所有一行中一个人的答案。
这是参加调查的一个人的原始结果的样子:
Result ID | What department do you work in? | I can focus on clear targets
1 | Unit D | Yes
这是数据框的外观:
if(oldString == newString || [oldString isEqualToString:newString]) {
// strings are the same
}
我在熊猫中尝试了几种不同的选择,但无法获得预期的结果。
答案 0 :(得分:1)
如果每个人都有一个非空值,请使用带有过滤功能的嵌套字典理解:
d = {'0': {'title': 'What department do you work?',
'results': {'0': '', '1': '', '2': '', '3': 'Unit D'}},
'1': {'title': 'I can focus on clear targets?',
'results': {'0': 'Yes', '1': '', '2': ''}}}
df = pd.DataFrame({v['title']: [v1 for k1, v1 in v['results'].items() if v1]
for k, v in d.items()})
print (df)
What department do you work? I can focus on clear targets?
0 Unit D Yes
如果可能的话,有多个值:
d = {'0': {'title': 'What department do you work?',
'results': {'0': '', '1': '', '2': '', '3': 'Unit D'}},
'1': {'title': 'I can focus on clear targets?',
'results': {'0': 'Yes', '1': 'No', '2': ''}}}
df = pd.DataFrame({v['title']: pd.Series([v1 for k1, v1 in v['results'].items() if v1])
for k, v in d.items()})
print (df)
What department do you work? I can focus on clear targets?
0 Unit D Yes
1 NaN No