pandas 确保年份和月份作为数据清理的一部分运行

bttbmeg0  于 2022-12-17  发布在  其他
关注(0)|答案(1)|浏览(117)

我有2个数据集:

  1. 1982-01年至2022-08年每月降雨量(毫米)
  2. 1982-01至2022-08年每年每月的雨日数目。
month   no_of_rainy_days
0   1982-01 10
1   1982-02 5
2   1982-03 11
3   1982-04 14
4   1982-05 10
month   total_rainfall
0   1982-01 107.1
1   1982-02 27.8
2   1982-03 160.8
3   1982-04 157.0
4   1982-05 102.2

问1:作为确保数据完整性的一部分,我如何确保日期连续运行?即1982-01,下一个是1982-02,而不是跳到1982-03?
我不确定如何进行检查,并在网上做了搜索。假设年份和月份正在运行是常见的做法吗?

c2e8gylq

c2e8gylq1#

首先,把年和月分开。

df.rename(columns={"month": "ym"}, inplace=True)
df[["year", "month"]] = df["ym"].astype(str).str.split("-", expand=True)

然后,您可以按年对 Dataframe 进行分组,并计算每年的观测数(计算每年的行数)。

observations_per_year = df["year"]\
    .groupby(df["year"])\
    .agg("count")\
    .reset_index(name="observations")
observations_per_year[observations_per_year["observations"] < 12]

假设您有少于12个观测值的年份,它们将显示如下:

year  observations
0   1982            11
4   1986            11
5   1987            11
6   1988            10
11  1993            11

由于缺乏细节和样本数据,我对您的数据做了一些假设:
1.每个数据集在一年中的任何月份都不超过一行(即,每年最多12行/观察结果)。
1.每个 Dataframe 每行包含一个观察,如示例所示(因此,您可以在合并 Dataframe 之前对每个 Dataframe 执行此操作)。因此,按年-月计算行数是计算任何给定月份观察数的准确方法。
1.数据的排序顺序是无关紧要的(如果需要,您可以稍后按年-月排序)。

相关问题