繁体   English   中英

Pandas - 展平列,这是一个词典列表

[英]Pandas - Flatten a column which is a list of dictionaries

假设我有以下DataFrame:

import pandas as pd
df = pd.DataFrame({'events': [ [{'event_text': 'hello1'}, {'event_text': 'hello2'}],
                                [{'event_text': 'whats up?'}],
                                [{'event_text': 'all good'}, {'event_text': 'bye'}] ]})

print(df)
                                              events
0  [{'event_text': 'hello1'}, {'event_text': 'hel...
1                      [{'event_text': 'whats up?'}]
2  [{'event_text': 'all good'}, {'event_text': 'b...

我试图将所有文本提取到一个列中,如下所示:

0     hello1
1     hello2
2  whats up?
3   all good
4        bye

我认为解决方案涉及json_normalize。 我尝试过以下方法:

from pandas.io.json import json_normalize
df['events'].apply(json_normalize)

但它产生了以下结果:

0      event_text
0     hello1
1     hello2
1                   event_text
0  whats up?
2      event_text
0   all good
1        bye

任何Pythonic方式来处理这个?

在列表理解中使用flatteningget select event_text ,将其传递给Series

s = pd.Series([y.get('event_text') for x in df['events'] for y in x])
print (s)
0       hello1
1       hello2
2    whats up?
3     all good
4          bye
dtype: object

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM