我正在尝试在我的数据框中扩展“记录”列,该列是字典的嵌套列表 我正在尝试提取列: 产品,利息,Id,公司,交易,日期,家庭,金额,货币
Size Records.id
10 [{u'Product': u'Ops', u'interest':
None, u'Id': u'78827dhdgsg', u'Company': u'Panda',
u'attributes': {u'type': u'Lead', u'url':
u'x567'},
u'Deal': u'xxx6787', u'Date':
u'2018-12-03', u'Family': u'Ops',
u'Amount': 9300, u'Currency': u'USD'}]
[{u'Product': u'gold',
5 u'interest': None, u'Id': u'377ffh38',
u'Company': u'BIGPT', u'attributes': {u'type': u'Lead', u'url':
u'x57589'},
u'Deal': u'wakft', u'Date':
u'2015-10-17', u'Family': u'bugs',
u'Amount': 48889, u'Currency': u'USD'}]
我尝试过
pd.concat([pd.DataFrame(x) for x in data['Records.id']],keys=data.index).reset_index(level=1,drop=True)
这曾经可以工作,但是由于某些原因我一直报错,ValueError:DataFrame构造函数未正确调用!
Size Product Interest Id Company Deal Date Family Amount Currency
10 Ops 7882.. Panda xxx.. 2018-12-03 Ops 9300 USD
5 Ops 377ff..BIGPT wakft 2015-10-17 Bugs 48889 USD
答案 0 :(得分:1)
您可以使用stack
df_1 = (df.set_index('Size')['Records.id']
.apply(pd.Series).stack()
.apply(pd.Series).reset_index().drop('level_1',1))
您也可以这样做
df_2 = pd.concat([pd.DataFrame(x) for x in df['records id']],
keys=df['size']).reset_index(level=1, drop=True).reset_index()
但是您需要将size
列与此df_2
相连,以获得最终所需的输出数据帧。