python - 将 pandas 中的列值分组并将其他列值放入列表中
问题描述
我有一个熊猫数据框:
col1 col2 col3
a NaN NaN
b 1 2
b 3 4
c 5 6
我想把它改成这样的数据框:
col1 col2 col3
a NaN NaN
b [1,3] [2,4]
c 5 6
有没有一种简单的方法可以实现这一目标?
解决方案
仅当长度较大时,您才需要为列表自定义 lambda 函数,例如1
:
df1 = df.groupby('col1').agg(lambda x: list(x) if len(x) > 1 else x).reset_index()
print (df1)
col1 col2 col3
0 a NaN NaN
1 b [1.0, 3.0] [2.0, 4.0]
2 c 5.0 6.0
因为如果按列表聚合也得到一个元素列表:
print (df.groupby('col1').agg(list))
col2 col3
col1
a [nan] [nan]
b [1.0, 3.0] [2.0, 4.0]
c [5.0] [6.0]
推荐阅读
- azure - Azure:无法安装正确推送到工件源存储库的 PowerShell 模块
- windows - VBScript 不会从从 Windows 任务计划程序运行的 Powershell 脚本运行
- javascript - 我们无法在 LG 商店中发布项目
- html - 如何在 ie8 将表格行和列转换为滚动表格?
- azure-api-management - 从开发者门户中删除订阅密钥 -> 试试看
- loops - 使用循环创建具有双 y 轴的多个 matplotlib 图
- javascript - Firestore:时间戳与日期字符串“yyyy-mm-dd”。什么是较小的(文件大小)?
- ios - 将 CoreBluetooth 代表移动到单独的班级后,如何让他们工作?
- javascript - Redux 不加载 api
- .net - 对 CSV 文件进行数字签名的最佳方法是什么?