【问题标题】:Grouping data and find sum分组数据并求和
【发布时间】:2021-01-24 17:33:40
【问题描述】:

我正在处理以下数据,我想根据时间范围(即从 0 到 4、0 到 4、0 到 3、0 到 6、0 到 3 和 0)分组并找到分组数据的平均值到 4,这意味着我将保留 6 行,每行中的电流平均值。而且,我尝试使用以下代码来做到这一点。

import pandas as pd
Time = [0,1,2,3,4,0,1,2,3,4,0,1,2,3,0,1,2,3,4,5,6,0,1,2,3, 0,1,2,3,4] # in minutes
Current  = [0,2,3,4,5,1,2,3,4,6,0,1,1,2,-1,2,2,3,4,5,5,0,-1,3,4,0,1,1,2,4] # in Ampere
df = pd.DataFrame({'Time (Min)': Time,'Current (A)': Current})
print(df)

xx = df.groupby(['Time (Min)']).sum() 
print(xx)

但是,我得到以下结果

Time (Min)          Current (A)   
0                     0
1                     7
2                    13
3                    19
4                    19
5                     5
6                     5

知道怎么做吗? 提前谢谢你。

预期输出

【问题讨论】:

  • 你的预期输出是什么?

标签: python pandas sorting mean


【解决方案1】:

看起来你需要类似的东西

df.groupby(df['Time (Min)'].diff().ne(1).cumsum())['Current (A)'].mean()

     Time (Min)
1    2.800000
2    3.200000
3    1.000000
4    2.857143
5    1.500000
6    1.600000
Name: Current (A), dtype: float64

【讨论】:

    【解决方案2】:

    您可以为Time 列中出现的每个零创建组并取这些组的平均值

    df.groupby(df['Time (Min)'].eq(0).cumsum())['Current (A)'].mean()
    

    输出:

    Time (Min)
    1    2.800000
    2    3.200000
    3    1.000000
    4    2.857143
    5    1.500000
    6    1.600000
    

    这是如何工作的

    检查Time中哪一行为零

    df['Time (Min)'].eq(0)
    

    输出:

    0      True
    1     False
    2     False
    3     False
    4     False
    5      True
    6     False
    7     False
    8     False
    9     False
    10     True
    11    False
    12    False
    13    False
    14     True
    15    False
    16    False
    ...
    

    累加 True 值以获得从 0 到 n 的每个范围的不同数字

    df['Time (Min)'].eq(0).cumsum()
    

    输出:

    0     1
    1     1
    2     1
    3     1
    4     1
    5     2
    6     2
    7     2
    8     2
    9     2
    10    3
    11    3
    12    3
    13    3
    14    4
    15    4
    16    4
    ...
    

    现在您可以按预期分组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-27
      • 1970-01-01
      • 2018-01-25
      • 2019-04-21
      • 1970-01-01
      • 2014-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多