【发布时间】:2019-08-06 04:24:21
【问题描述】:
所以我有一个 pandas 数据框,其中包含一个字典数组,我正在努力解决如何将这些转换为原始字典中的列。
df3 = pd.DataFrame({'SomeCol':
["[{'Source': 'A', 'Value': '4.7'}]",
"[{'Source': 'A', 'Value': '8.2'},"
"{'Source': 'B', 'Value': '100%'}]",
"[{'Source': 'A', 'Value': '8.1'}, "
"{'Source': 'C', 'Value': '870'},"
"{'Source': 'B', 'Value': '98%'}]",
"[{}]"
],
'Other Stuff': ['One'
, 'Two', 'Three', 'Four'
]
})
我希望得到以下结果
A B C
0 4.7 na na
1 8.2 100% na
2 8.1 98% 870
我试过了
data.map(eval).apply(pd.Series)
以及主题的许多变体
def f2(x):
df_r = pd.DataFrame()
for i in x:
df_r = pd.DataFrame.from_dict(x, orient='columns')
return df_r
dfa = pd.concat([df3, df3['SomeCol'].map(eval).apply(f2)])
我似乎遗漏了一些重要的东西。离我最近的是
第一次调用f2函数的结果接近
Source Value
0 A 4.7
0 A 8.2
1 B 100%
0 A 8.1
1 C 870
2 B 98%
但是当我将它们连接在一起时,我会变得一团糟。只是一些关于从这里去哪里的帮助会很有帮助。在过去的两天里,我一直在用一种简单的方法以及一种蛮力来挣扎,而neigher 似乎可以解决它。
【问题讨论】:
-
解决方案很简单,请检查一下。
标签: python arrays pandas dictionary