使用列的条件选择评估数据集

Evaluation of a data set with conditional selection of columns

我想用降水数据评估一个数据集。数据以 csv 文件的形式提供,我用 pandas 作为数据框读入了该文件。由此可得出以下 table:

year  month  day      value
0      1981      1    1   0.522592
1      1981      1    2   2.692495
2      1981      1    3   0.556698
3      1981      1    4   0.000000
4      1981      1    5   0.000000
...     ...    ...  ...        ...
43824  2100     12   27   0.000000
43825  2100     12   28   0.185120
43826  2100     12   29  10.252080
43827  2100     12   30  13.389290
43828  2100     12   31   3.523566

现在我想将日降水值转换为月降水值和每个月的降水值(为此我需要一个月中每一天的总和)。为此,我可能需要一个循环或类似的东西。但是,我不知道如何进行。也许通过 'year' 和 'month' 的条件选择?! 我会很高兴收到反馈! :)

这就是我现在尝试的方法:

for i in range(len(dataframe)):
    print(dataframe.loc[i, 'year'], dataframe.loc[i, 'month'])

你试过groupby吗?

Df.groupby(['year', 'month'])['value'].agg('sum')

我将首先制作一个包含日期的列:

df['date'] = pd.to_datetime(df[['year', 'month', 'day']])

从这里您可以将日期设为索引:

df.set_index('date', inplace=True)
# I'll drop the unneeded year, month, and day columns as well.
df = df[['value']]

我的数据现在看起来像:

               value
date
1981-01-01  0.522592
1981-01-02  2.692495
1981-01-03  0.556698
1981-01-04  0.000000
1981-01-05  0.000000

从这里开始,让我们尝试resampling数据!

# let's doing a 2 day sum. To do monthly, you'd replace '2d' with 'M'.
df.resample('2d').sum()

输出:

               value
date
1981-01-01  3.215087
1981-01-03  0.556698
1981-01-05  0.000000

希望这能给你一些开始~