Python Pandas中explode函数是否存在对应的逆操作?
当然有啦!这种操作正好是
explode()的逆过程 这种把分散的行按指定列分组后,将另一列的值聚合为列表的需求,在Pandas里可以轻松实现,核心就是用groupby()配合聚合函数来完成。
先还原你的原始DataFrame:
import pandas as pd df = pd.DataFrame({ 'A': [1, 1, 2, 2], 'B': [1, 2, 1, 2] })
实现逆操作的核心代码
直接按列A分组,然后对B列聚合为列表,最后重置索引即可:
result_df = df.groupby('A')['B'].agg(list).reset_index()
运行后得到的结果完全符合你的预期:
A B 0 1 [1, 2] 1 2 [1, 2]
一些实用补充
- 如果需要按多列分组,只需要把所有分组列放进
groupby()的参数列表里,比如df.groupby(['A', 'C'])['B'].agg(list).reset_index() - 要是担心列表里的元素顺序和原始数据不一致,可以用
agg(pd.Series.tolist)替代agg(list),两者效果一致,但能明确保留原始数据的顺序 - 另外还有
groupby().apply(list)的写法,但agg(list)的性能更优,处理大数据集时差异会更明显
内容的提问来源于stack exchange,提问作者eera
相关产品推荐
相关产品推荐

