【问题标题】:python dataframe operationspython数据框操作
【发布时间】:2020-11-02 16:51:08
【问题描述】:

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

输入

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
.
.
.
.

预期输出(累积期=3)

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
.
.
.
.

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

【问题讨论】:

  • 1.累积重置的频率应该是多少? 2. 您的数据是您提供的格式的文本文件吗? 3. 您是对最频繁的 3 个月求和,还是每个月求和但从第三个月开始取总和值?
  • 谢谢,每个位置都有从1990年到2020年的月记录,当经度或纬度发生变化时必须重新计算,因为这表明它是另一个点并且数据(所有记录) 为 CSV 格式。信息是有组织的,没有 nan 值。
  • 你没有回答我的 Q3。您的预期输出看起来不像您在文本中描述的 3 个月累积。你能解释一下吗?
  • 如果我有一个一年(12个月)的系列并且我想累积3个月,我将存储数据的字段(prec_3)将从3月开始有值一月,二月和三月的总和,对于四月,它将是二月和三月和四月的总和,依此类推。累积一直进行到系列结束,在这种情况下,问题是纬度或经度何时发生变化,因为它是另一个位置。
  • 给定的累积周期,可以是2,3,12

标签: python pandas dataframe


【解决方案1】:

看起来.rolling(period).sum() 就是您要查找的内容。

输入csv文件

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

请注意,为了匹配cumsum 输出,预先排序会更改列顺序。如果需要,可以通过df.sort_index() 恢复。

输出

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

【讨论】:

    猜你喜欢
    • 2020-12-07
    • 1970-01-01
    • 2021-12-22
    • 2018-06-21
    • 2019-01-05
    • 1970-01-01
    • 2022-11-24
    • 2017-11-30
    • 2013-03-04
    相关资源
    最近更新 更多