[英]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方式来处理这个?
在列表理解中使用flattening并get
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.