python数据帧操作

python数据帧操作,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个不同位置(纬度和经度)的历史降水记录(1990-2010)数据集,有一个具有5个属性(纬度、经度、年、月、prec)的表。 数据集是通过按纬度、经度和时间定义组来组织的。 例如: 输入 预期产量(累计期=3) 我想对该时间序列进行分析,该分析包括对降水量变量进行计算,例如通过坐标对将不同的累积期相加,例如,时间段的3个月和6个月,然后将数据调整为概率分布。 有人知道如何执行这些“总和”吗?考虑到它应该在给定的时间段内,并且不应该使用与另一个给定纬度和经度相关的信息? 补充资料 从1990

我有一个不同位置(纬度和经度)的历史降水记录(1990-2010)数据集,有一个具有5个属性(纬度、经度、年、月、prec)的表。 数据集是通过按纬度、经度和时间定义组来组织的。 例如:

输入

预期产量(累计期=3)

我想对该时间序列进行分析,该分析包括对降水量变量进行计算,例如通过坐标对将不同的累积期相加,例如,时间段的3个月和6个月,然后将数据调整为概率分布。 有人知道如何执行这些“总和”吗?考虑到它应该在给定的时间段内,并且不应该使用与另一个给定纬度和经度相关的信息? 补充资料
从1990年到2020年有月度记录,当经度或纬度发生变化时,必须重新开始计算,因为这表明它是另一个点,并且数据(所有记录)为CSV格式。信息是有组织的,没有nan值

它看起来像是
。滚动(句点)。sum()
就是您要找的

输入csv文件 代码 请注意,通过预排序更改列顺序,以匹配
cumsum
输出。如果需要,可以通过
df.sort\u index()
恢复

输出
1.累积应多久重置一次?2.您的数据是您提供的格式的文本文件吗?3.您是对最频繁的3个月进行求和,还是每月进行求和,但从第三个月开始计算求和值?谢谢,对于每个位置,都有1990年到2020年的月度记录,当经度或纬度发生变化时,必须重新开始计算,因为这表明它是另一个点和数据(所有记录)是CSV格式的。这些信息是有组织的,没有nan值。您没有回答我的第3个问题。你的预期产出不像你在文章中描述的那样是3个月的累积。你能解释一下吗?如果我有一个一年(12个月)的序列,并且我想进行3个月的累加,我将存储数据的字段(prec_3)将从3月份开始具有值,即1月、2月和3月的和,对于4月份,它将是2月、3月和4月的和,依此类推。累加一直进行到序列结束,在本例中,由于是另一个位置,因此当纬度或经度发生变化时,将进行累加。累加周期可以是2,3,12
lan/lon/year/month/prec
-17/18/1990/1/0.4
-17/18/1990/2/0.02
-17/18/1990/3/0.12
-17/18/1990/4/0.06
.
.
.
-17/18/2020/12/0.35
-17/20/1990/1/0.2
-17/20/1990/2/0.2
-17/20/1990/3/0.2
-17/20/1990/4/0.2
.
.
.
-17/20/2020/12/0.08
-18/20/1990/1/0.11
-18/20/1990/2/0.11
-18/20/1990/3/0.11
.
.
.
.
lan/lon/year/month/prec/prec_3
-17/18/1990/1/0.4/-
-17/18/1990/2/0.02/-
-17/18/1990/3/0.12/0.54
-17/18/1990/4/0.06/0.2
.
.
.
-17/18/2020/12/0.35/12.58
-17/20/1990/1/0.2/-
-17/20/1990/2/0.2/-
-17/20/1990/3/0.2/0.6
-17/20/1990/4/0.2/0.8
.
.
.
-17/20/2020/12/0.08/35.0
-18/20/1990/1/0.11/-
-18/20/1990/2/0.11/-
-18/20/1990/3/0.11/0.33
.
.
.
.
lan/lon/year/month/prec
-17/18/1990/1/0.4
-17/18/1990/2/0.02
-17/18/1990/3/0.12
-17/18/1990/4/0.06
-17/18/2020/12/0.35
-17/20/1990/1/0.2
-17/20/1990/2/0.2
-17/20/1990/3/0.2
-17/20/1990/4/0.2
-17/20/2020/12/0.08
-18/20/1990/1/0.11
-18/20/1990/2/0.11
-18/20/1990/3/0.11
df = pd.read_csv(path_to_file, sep="/").sort_values(["lan","lon","year","month"])
df["prec_3"] = df.groupby(["lan","lon"])["prec"].rolling(3).sum().values
print(df)  # the original ordering is preserved in the index

    lan  lon  year  month  prec  prec_3
10  -18   20  1990      1  0.11     NaN
11  -18   20  1990      2  0.11     NaN
12  -18   20  1990      3  0.11    0.33
0   -17   18  1990      1  0.40     NaN
1   -17   18  1990      2  0.02     NaN
2   -17   18  1990      3  0.12    0.54
3   -17   18  1990      4  0.06    0.20
4   -17   18  2020     12  0.35    0.53
5   -17   20  1990      1  0.20     NaN
6   -17   20  1990      2  0.20     NaN
7   -17   20  1990      3  0.20    0.60
8   -17   20  1990      4  0.20    0.60
9   -17   20  2020     12  0.08    0.48