我正在尝试将具有json字符串的列从json数据转换为多列。 示例数据:
1
0
id1 {"c1": ["a","b"], "c2": [.1, .2], "c3": ["3","1"]}
id2 {"c1": ["c","d"], "c2": [.7, .4], "c3": ["8","4"]}
我怎么把它变成:
c1 c2 c3
id1 a .1 3
b .2 1
id2 c .7 8
d .4 4
如何仅使用熊猫函数来实现此目的?
答案 0 :(得分:2)
将dictionary comprehension
与ast.literal_eval
一起用于将字符串转换为字典和列表:
import ast
df = pd.concat({k: pd.DataFrame(ast.literal_eval(v)) for k, v in df[1].items()})
print (df)
c1 c2 c3
id1 0 a 0.1 3
1 b 0.2 1
id2 0 c 0.7 8
1 d 0.4 4
如果需要删除MultiIndex
:
df = df.reset_index(level=1, drop=True)
print (df)
c1 c2 c3
id1 a 0.1 3
id1 b 0.2 1
id2 c 0.7 8
id2 d 0.4 4