如何拆分Pandas DataFrame中含列表的单元格并展开数据?
搞定Pandas多列列表展开的需求
嘿,这需求我熟,直接给你上解决方案和解释!
首先先还原你的原始DataFrame:
import pandas as pd data = { 0: [['x','y','z'], ['a','b','c'], ['a','b','c']], 1: [['a','b','c'], ['a','b','c'], ['a','b','c']], 2: [['a','b','c'], ['x','y','z'], ['a','b','c']] } df = pd.DataFrame(data, index=['Mon', 'Tue', 'Wed'])
要转换成你想要的格式,一行代码就能搞定:
result = df.apply(pd.Series.explode)
运行后得到的result就是你要的样子:
0 1 2 Mon x a a Mon y b b Mon z c c Tue a a x Tue b b y Tue c c z Wed a a a Wed b b b Wed c c c
为啥这个方法管用?
apply(pd.Series.explode)会对DataFrame的每一列单独执行explode()操作explode()的作用就是把单元格里的列表拆成多行,同时保留原来的行索引(也就是你的日期标签)- 不管各列的列表长度是否一致,这个方法都能处理——如果某列的列表比其他列短,对应的位置会自动填充
NaN,完全适配你提到的场景
内容的提问来源于stack exchange,提问作者inquisitiveProgrammer
相关产品推荐
相关产品推荐

