gpt4 book ai didi

python - Groupby pandas 但对多列执行计算

转载 作者:行者123 更新时间:2023-12-03 21:42:09 25 4
gpt4 key购买 nike

我有一个如下所示的数据框:


姓名
日期
第 1 列
列2


一种
2021-03-01
0
1

一种
2021-03-02
0
0

一种
2021-03-03
3
1

一种
2021-03-04
1
0

一种
2021-03-05
3
1

一种
2021-03-06
1
0


2021-03-01
1
0


2021-03-02
2
0


2021-03-03
3
1


2021-03-04
0
1


2021-03-05
0
0


2021-03-06
0
0


我想按名称分组并找到其他非日期列的非零条目(基本上不包括任何前导或尾随零)所跨越的天数,以获得类似的结果:


姓名
第 1 列
列2


一种
4
5


3
2


如何在不诉诸 for 循环的情况下做到这一点?

最佳答案

我想, np.trim_zeros 是你要找的:

>>> import numpy as np; import pandas as pd
>>> df = pd.DataFrame.from_dict({'name': ['A']*6 + ['B']*6, 'col1': [0, 0, 3, 1, 3, 1, 1, 2, 3, 0, 0, 0], 'col2': [1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0]})

>>> df
name col1 col2
0 A 0 1
1 A 0 0
2 A 3 1
3 A 1 0
4 A 3 1
5 A 1 0
6 B 1 0
7 B 2 0
8 B 3 1
9 B 0 1
10 B 0 0
11 B 0 0

>>> df.groupby('name').aggregate(lambda x: len(np.trim_zeros(x))).reset_index()
name col1 col2
0 A 4 5
1 B 3 2

关于python - Groupby pandas 但对多列执行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66910047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com