如何在Python中解压缩复杂的嵌套列(字典词典列表)? [Twitter Ads API]

时间:2018-03-09 21:56:26

标签: python pandas dictionary twitter

您好我是Python /编程的新手,在我的数据框中解压缩嵌套列时遇到了麻烦。

有问题的df看起来像这样:

我尝试解压缩的列看起来像这样(采用JSON格式):

df['id_data'] = [{u'metrics': {u'app_clicks': [6, 28, 13, 28, 43, 45],
  u'card_engagements': [6, 28, 13, 28, 43, 45],
  u'carousel_swipes': None,
  u'clicks': [18, 33, 32, 48, 70, 95],
  u'engagements': [25, 68, 46, 79, 119, 152],
  u'follows': [0, 4, 1, 1, 1, 5],
  u'impressions': [1697, 5887, 3174, 6383, 10250, 12301],
  u'likes': [3, 4, 6, 9, 12, 15],
  u'poll_card_vote': None,
  u'qualified_impressions': None,
  u'replies': [0, 0, 0, 0, 0, 1],
  u'retweets': [1, 3, 0, 2, 5, 6],
  u'tweets_send': None,
  u'url_clicks': None},
 u'segment': None}]

正如您所看到的,本专栏中有很多内容。有一个列表 - >字典 - >字典 - >可能是另一个清单我希望每个单独的指标(app_clicks,card_engagement,carousel_swipes等)都是它自己的列。我尝试了以下代码没有进展。

df['app_clicks'] = df.apply(lambda row: u['app_clicks'] for y in row['id_data'] if y['metricdata'] = 'list', axis=1)

关于如何解决这个问题的任何想法?

2 个答案:

答案 0 :(得分:1)

您应该能够将字典直接传递给dataframe构造函数:

foo = pd.DataFrame(df['id_data'][0]['metrics'])
foo.iloc[:3, :4]

    app_clicks  card_engagements    carousel_swipes clicks
0   6           6                   None            18
1   28          28                  None            33
2   13          13                  None            32

希望我能正确理解你的问题,这可以满足你的需要

答案 1 :(得分:0)

您可以使用to_json

df1 = pd.DataFrame(json.loads(df["id_data"].to_json(orient="records")))
df2 = pd.DataFrame(json.loads(df1["metrics"].to_json(orient="records")))