使用列的条件选择评估数据集
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
希望这能给你一些开始~
我想用降水数据评估一个数据集。数据以 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
希望这能给你一些开始~