python - 如何根据另一列的分组来组合多列和多行
问题描述
我正在尝试根据 ID 列的按字段将多列和多行组合成单列。输入是
|Id | Sample_id | Sample_name | Sample_number|
|:--|:------------|:-----------:|---------------:|
|1 | 123 | Abcdef|ghij | 1234567 |
|1 | 345 | Vbnhj|tt|t | 45678 |
|1 | 456 | Ffff|yyy|yy | 789000 |
预期输出:属于相同 ID 的列、行应组合并形成如下列表。
Id Sample_details
123,Abcdef|ghij,1234567
1 345,Vbnhj|tt|t, 45678
456 ,Ffff|yyy|yy,789000
2 536 ,Ftff|uyy|iy,79000
453, hnhj|tdd|rr, 67678
我在下面尝试了它不起作用
df.groupby('Id')['Sample_id']['Sample_name']['Sample_number'].apply(','.join).reset_index()
解决方案
尝试:
df['Sample_details'] = df.filter(like='Sample_').astype(str).apply(','.join, axis=1)
out = df.groupby('Id')['Sample_details'].apply('\n'.join).reset_index()
输出:
>>> out
Id Sample_details
0 1 123,Abcdef|ghij,1234567\n345,Vbnhj|tt|t,45678\...
注意:Pandas 不解释转义序列。
推荐阅读
- node.js - 使用 npm package 验证包名
- python - 带有 If Else 语句的 Python Tkinter 按钮
- python - 如何在熊猫中合并/加入/连接/对齐两个具有不同时间间隔索引和大小的df
- python - 我如何知道我的令人尴尬的并行任务是否适合 GPU?
- oracle - Oracle SQL 和 PL/SQL 上下文切换
- woocommerce - 自定义 WooCommerce 支付网关未显示
- javascript - AngularJS UI 路由器在本地主机上不起作用
- java - 达到改变Java工作目录的效果
- sml - 递归漂亮的打印表达式
- python - 递归列出数据模型中任意深度的所有对象?