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

标签 python pandas

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


姓名
日期
第 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/

相关文章:

python - 如何获取当月的所有天数?

python - 将 pandas Dataframe 与不同长度的索引连接起来并保留所有

python - 过滤数据框的 Pandas 直方图

python - 如何在大数据文件中使用 pandas 删除重复的行?

python - 在循环内重新索引数据帧

python - 如何在谷歌应用引擎中处理多种形式?

python连续出现的长度

python - 如何在python中读取密码保护的excel

python - 计算 pandas 中的唯一值对

python - 在 Panda Dataframe 中附加 bool 列