仅检索至少有 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])
网络用户您好,
我有一个数据框,其中包含 '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])