【问题标题】:python pandas average number of consecutive valuespython pandas平均连续值数
【发布时间】:2020-05-29 20:26:41
【问题描述】:

我有一个 pandas 数据框,我想要连续连续值的平均数。例如,对于以下数据

   a b c d e f g h i j k l 
p1 0 0 4 4 4 4 4 4 1 4 4 1
p2 0 4 4 0 4 4 0 1 4 4 0 1

所以 p1 的连续 4 的平均数是 (6+2)/2 = 4,而 p2 是 (2+2+2)/3 = 2

还有没有办法找到连续值的最小和最大数量?即 p1 的最大值为 6。

【问题讨论】:

  • 请先理解连续数字的含义

标签: python pandas


【解决方案1】:

这适用于 p1。要获得 p2,只要看到正在使用的“iloc”函数,只需将 0 替换为 1。

dict = {0:[],1:[],2:[],3:[],4:[]}
counter = 1

for i in range(len(df.iloc[0])-1):

    num = df.iloc[0,i]
    num2 = df.iloc[0,i+1]

    if num == num2:
        counter += 1
    else: 
        dict[num].append(counter)
        counter = 1

然后得到连续4的平均数:

print(sum(dict[4])/len(dict[4]))

并获得连续 4 的最大数量:

print(max(dict[4]))

【讨论】:

    【解决方案2】:

    您可以转置您的数据框并使用以下帖子中建议的方法。您将获得一个包含连续数字计数的数据框,您可以使用它来执行平均值、最小值和最大值。

    https://stackoverflow.com/a/29643066/12452044

    【讨论】:

      猜你喜欢
      • 2021-10-20
      • 1970-01-01
      • 2016-05-06
      • 1970-01-01
      • 2012-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多