从包含字典列表的系列中创建熊猫数据框

charlie_boy

我的pandas数据框的其中一列如下所示

>> df
    Item 
0   [{"id":A,"value":20},{"id":B,"value":30}]
1   [{"id":A,"value":20},{"id":C,"value":50}]
2   [{"id":A,"value":20},{"id":B,"value":30},{"id":C,"value":40}]

我想将其扩展为

      A      B       C
0     20     30      NaN
1     20     NaN     50
2     20     30      40

我试过了

dfx = pd.DataFrame()
for i in range(df.shape[0]):
    df1 = pd.DataFrame(df.item[i]).T
    header = df1.iloc[0]
    df1 = df1[1:]
    df1 = df1.rename(columns = header)
    dfx = dfx.append(df1)

但这需要很多时间,因为我的数据非常庞大。做这个的最好方式是什么?

我的原始json数据如下所示:

{
  {
   '_id': '5b1284e0b840a768f5545ef6',
   'device': '0035sdf121',
   'customerId': '38',
   'variantId': '31',
   'timeStamp': datetime.datetime(2018, 6, 2, 11, 50, 11),
   'item': [{'id': A, 'value': 20},
          {'id': B, 'value': 30},
          {'id': C, 'value': 50}
  },
  {
   '_id': '5b1284e0b840a768f5545ef6',
   'device': '0035sdf121',
   'customerId': '38',
   'variantId': '31',
   'timeStamp': datetime.datetime(2018, 6, 2, 11, 50, 11),
   'item': [{'id': A, 'value': 20},
            {'id': B, 'value': 30},
            {'id': C, 'value': 50} 
  },
.............
}
冠军

我同意@JeffH,您应该真正了解如何构建DataFrame

假设您是从某个无法控制的地方获得的,则可以使用以下方法转换为所需DataFrame的对象:

In []:
pd.DataFrame(df['Item'].apply(lambda r: {d['id']: d['value'] for d in r}).values.tolist())

Out[]:
    A     B     C
0  20  30.0   NaN
1  20   NaN  50.0
2  20  30.0  40.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章