python-3.x - 计算多个列并在单独的列中列出计数并保留一列
问题描述
我有以下数据框:
id coord_id val1 val2 record val3
0 snp chr15_1-1000 1.0 0.9 xx12 2
1 snv chr15_1-1000 1.0 0.7 yy12 -4
2 ins chr15_1-1000 0.01 0.7 jj12 -4
3 ins chr15_1-1000 1.0 1.5 zzy1 -5
4 ins chr15_1-1000 1.0 1.5 zzy1 -5
5 del chr10_2000-4000 0.1 1.2 j112 12
6 del chr10_2000-4000 0.4 1.1 jh12 15
我正在尝试计算每个 id 出现的每个 coord_id 的次数,但将 val1 列保留在结果表中,但仅在该列中包含值的范围,例如,我正在尝试完成以下结果:
id snp snv ins del total val1
chr15_1-1000 1 1 3 0 5 0.01-1.0
chr10_2000-4000 0 0 0 2 2 0.1-0.4
我想按总列升序对其进行排序。
非常感谢它。
解决方案
首先转入id
具有计数聚合和边距总和的列。然后join()
使用val1
min-max 字符串:
(df.pivot_table(index='coord_id', columns='id', values='val1',
aggfunc='count', fill_value=0,
margins=True, margins_name='total')
.join(df.groupby('coord_id').val1.agg(lambda x: f'{x.min()}-{x.max()}'))
.sort_values('total', ascending=False)
.drop('total'))
# del ins snp snv total val1
# coord_id
# chr15_1-1000 0 3 1 1 5 0.01-1.0
# chr10_2000-4000 2 0 0 0 2 0.1-0.4
推荐阅读
- visual-studio-2017 - 如何更改某个变更集的注释颜色
- asp.net - 如何基于在 Asp.net mvc 和 Knockoutjs 中单击 Add new 来重复绑定控件
- ios - iOS-如何在限制范围内绘画
- python - 在 tkinter 中使用线程
- excel - 将 2 行单元格与电子表格中同一列中的行下单元格进行比较时,根据重复值删除行
- c# - 如何修改 ChartingToolkit LineChart 的 X 轴
- php - Launch中的VSCode PHP调试当前打开断点无法工作的脚本
- c++ - 将整数写入流
- docker - 如何禁止 docker cp 选项
- gremlin - 从顶点移除标签