仅检索至少有 28 个样本日的月份 - pandas 数据框

retrieve only months with at least 28 sample days - pandas dataframe

网络用户您好,

我有一个数据框,其中包含 'DATE'(日期时间)作为索引,TMAX 作为具有值的列: tmax dataframe

我想做的是检查每个月(每年)的样本量(每个 TMAX 列值都被视为一个样本)。 如果我的样本少于 28 个,我想删除那个特定月份(特定年份)及其所有样本。

我有以下代码:

if __name__ == '__main__':
    df = pd.read_csv("2961941.csv")

    # set date column as index, drop the 'DATE' column to avoid repititions + create as datetime object
    # speed up parsing using infer_datetime_format=True.
    df['DATE'] = pd.to_datetime(df['DATE'], infer_datetime_format=True)
    df.set_index('DATE', inplace=True)

    # create new table out of 'DATE' and 'TMAX'
    tmax = df.filter(['DATE', 'TMAX'], axis=1)
    # erase rows with missing data
    tmax.dropna()
    # create snow table & delete rows with missing info
    snow = df.filter(['DATE', 'SNOW']).dropna()
    # for index, row in tmax.iterrows():

感谢您的帮助。

我可以建议尝试以下方法。 在这里,我将一个月中的天数统计到变量 'a' 中的结果突出显示。 然后我过滤一个月中少于28天的数据。 它对我有用。

a = df.groupby(pd.Grouper(level='DATE', freq="M")).transform('count')
print(df[a['TMAX'] >= 28])