如何用Python将Pandas DataFrame行转为键-列表值对
Pandas DataFrame 格式转换方案
当然有,直接用Pandas的内置分组聚合方法就能实现,完全不需要写循环,都是矢量化操作,效率很高。
实现代码:
首先构造示例数据(如果已有DataFrame可跳过这一步):
import pandas as pd df = pd.DataFrame({ 'id': [1, 2, 3], 'name': ['AAA', 'BBB', 'CCC'], 'value1': [1.0, 2.0, 3.0], 'value2': [1.5, 2.3, 3.6], 'value3': [1.8, 2.5, 3.7] })
方法一:使用groupby + apply(list)
result = df.groupby('name')[['value1', 'value2', 'value3']].apply(list).reset_index(name='value')
方法二:使用groupby + agg(list)(更推荐,性能更优)
result = df.groupby('name')[['value1', 'value2', 'value3']].agg(list).reset_index(name='value')
执行后得到的result就是你需要的格式:
name value 0 AAA [1.0, 1.5, 1.8] 1 BBB [2.0, 2.3, 2.5] 2 CCC [3.0, 3.6, 3.7]
内容的提问来源于stack exchange,提问作者SM079
相关产品推荐
相关产品推荐

