您好我是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)
关于如何解决这个问题的任何想法?
答案 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")))