gpt4 book ai didi

python - 在 python 中将缺失的行填充为 NaN

转载 作者:太空宇宙 更新时间:2023-11-04 03:36:47 25 4
gpt4 key购买 nike

我有一个文件,其中包含来自 83 个气象站和每个气象站 101 年的每日降水数据。我想确定每个站每年的 NaN 数。

作为一个简短的例子,假设我只有一个站点并且只关心 2009 年 1 年的数据。

如果我有这个:

 station_id  year    month   1    2     3 
210018 2009 1 5 6 8
210018 2009 2 NaN NaN 6
210018 2009 12 8 5 6

我想说的是:

 station_id  year    month   1    2     3 
210018 2009 1 5 6 8
210018 2009 2 NaN NaN 6
210018 2009 3 NaN NaN NaN
210018 2009 4 NaN NaN NaN
210018 2009 5 NaN NaN NaN
210018 2009 6 NaN NaN NaN
210018 2009 7 NaN NaN NaN
210018 2009 8 NaN NaN NaN
210018 2009 9 NaN NaN NaN
210018 2009 10 NaN NaN NaN
210018 2009 11 NaN NaN NaN
210018 2009 12 8 5 6

所以我的电台需要 12 行来表示所有 12 个月和一年的每一行。在真实的例子中我又一次有 101 年。

我正在尝试使用这段代码:

df_indexed=df.set_index(['year'])
new_index=np.arange(1910,2011,1)
idx=pd.Index(new_index)
df2=df_indexed.reindex(idx, method=None)

但它返回一个以

结尾的长错误

ValueError:无法从重复轴重新索引

我希望这是有道理的。

最佳答案

我可能会做的是创建一个目标 MultiIndex,然后使用它进行索引。例如:

>>> target_ix = pd.MultiIndex.from_product([df.station_id.unique(),
np.arange(1910, 2011, 1), np.arange(1,13)],
names=["station_id", "year", "month"])
>>> df = df.set_index(["station_id", "year", "month"])
>>> new_df = df.loc[target_ix]
>>> new_df.tail(24)
1 2 3
station_id year month
210018 2009 1 5 6 8
2 NaN NaN 6
3 NaN NaN NaN
4 NaN NaN NaN
5 NaN NaN NaN
6 NaN NaN NaN
7 NaN NaN NaN
8 NaN NaN NaN
9 NaN NaN NaN
10 NaN NaN NaN
11 NaN NaN NaN
12 8 5 6
2010 1 NaN NaN NaN
2 NaN NaN NaN
3 NaN NaN NaN
4 NaN NaN NaN
5 NaN NaN NaN
6 NaN NaN NaN
7 NaN NaN NaN
8 NaN NaN NaN
9 NaN NaN NaN
10 NaN NaN NaN
11 NaN NaN NaN
12 NaN NaN NaN

如果您愿意,此时可以.reset_index()

关于python - 在 python 中将缺失的行填充为 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28683177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com