【问题标题】:Python dataframe counting occurences over specific number of previous rowsPython数据帧计数出现在特定数量的先前行上
【发布时间】:2021-11-08 05:41:54
【问题描述】:

我有一个包含几个 100 个 ID 的数据框,我想对其进行迭代。我想迭代它们,以便将一列中的值与该数据框中的先前值(每月数据)中的 30 个进行比较。我想用前 30 行计算手头值的出现次数。有人可以帮我解决这个问题吗?

如果数据帧索引 = 0 或小于 30 的某个数字,我必须从另一个数据帧(前一个月)中查找数据值,以便始终与我拥有的值之前的 30 个值进行比较。

我一直在尝试对我的数据进行切片和使用 pd.concat,但它没有工作。

count = 0 
for i in df_current.index:
    val = df_current['id'].index
    df_current = df_current[0:i]
    df_previous = df_previous[i:]
    new_df = pd.concat([df_previous, df_current])
    if(len(new_df[new_df['id'] == val]) != 0):
        count += 1

【问题讨论】:

    标签: python pandas dataframe iteration counter


    【解决方案1】:

    这是一种计算前一个窗口中出现次数的方法。我已将窗口设置为 5 而不是 30,并且我没有您的其他数据框来查找以前的值,因此没有足够以前元素的索引的计数为 null。

    import pandas as pd
    import numpy as np
    
    np.random.seed(1)
    
    df = pd.DataFrame({
        'id':np.random.randint(low=1,high=5,size=20),
    })
    
    
    df['id_count'] = df['id'].rolling(5).apply(lambda v: sum(v == v.iloc[-1])-1)
    df
    

    输出是

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 2020-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-04
      • 1970-01-01
      相关资源
      最近更新 更多