我有:
grp = ["A","B","C","A","C","C","B"]
dictl = ["[{'TypeID': 0, 'Description': 'blah', 'DateCreated': '2018-08-09T14:00:30.957'}]",
"[{'TypeID': 0, 'Description': 'blah', 'DateCreated': '2018-08-09T14:00:30.957'}]",
"[]","[{'TypeID': 0, 'Description': 'blah', 'DateCreated': '2018-08-09T14:00:31.504'}]",
"[{'TypeID': 0, 'Description': 'blah', 'DateCreated': '2018-08-09T14:00:31.504'}]",
"[]","[{'TypeID': 0, 'Description': 'blah', 'DateCreated': '2018-08-09T14:00:31.504'}]"]
df = pd.DataFrame({'grp':grp,'dictl':dictl})
我想将其转换为:
pd.DataFrame({'grp':["A","B","C","A","C","C","B"],
'TypeID':["0","0","","0","0","","0"],
'Description':["blah","blah","","blah","blah","","blah"],
'DateCreated':["2018-08-09T14:00:30.957","2018-08-09T14:00:30.957","","2018-08-09T14:00:31.504","2018-08-09T14:00:31.504","","2018-08-09T14:00:31.504"]})
我尝试了来自的建议
Change a column containing list of dict to columns in a DataFrame
,并存在以下问题:
for grp, dictl in df:
rec = {'Name': grp}
rec.update(x for d in dictl for x in d.items())
records.append(rec)
错误:
ValueError: too many values to unpack (expected 2)
和
df['dictl'].apply(lambda c:
pd.Series({next(iter(x.keys())).strip(':'):
next(iter(x.values())) for x in c})
)
给出错误:
AttributeError: 'str' object has no attribute 'keys'
我有>2m行,所以如果可能的话,希望这种方法快速