猿问

填充数据框列Python中的缺失值

我的数据分为 4 列,如下所示:


State       Year        Month        Value

AK          2010         1             10

AK          2010         3             20

AK          2011         1             28

AK          2011         5             29

AK          2011         12            31

.

.

TX          2010         2             10

TX          2010         3             11

TX          2010         4             20

TX          2010         12            22

TX          2011         4             30

TX          2011         7             33

.

.

我想,以填补缺失的月与以前的重复值相同的年份,因为他们是我加在一起刚好累计总和。


月份并不总是从第 1 个月开始,有时可能会丢失整年,所以我需要解决这个问题。


即:TX 可以在 2011 年的第 4 个月开始等......


所需的输出如下所示:


State       Year        Month        Value

AK          2010         1             10

AK          2010         2             10

AK          2010         3             20

AK          2010         4             20

AK          2010         5             20

.

.

AK          2010         12            20

AK          2011         1             28

AK          2011         2             28

.

.

TX          2010         1             9

TX          2010         2             10

TX          2010         3             11

TX          2010         4             20

TX          2010         5             20

.

.

TX          2010         12            22


饮歌长啸
浏览 171回答 1
1回答

幕布斯6054654

一种解决方案是使用分类数据:# convert Month to categorical with 1-12 rangedf['Month'] = pd.Categorical(df['Month'], categories=range(1, 13))# groupby to give Cartesian product for categorical columnsdf = df.groupby(['State', 'Year', 'Month']).first().reset_index()# forward fill by groupdf['Value'] = df.groupby('State')['Value'].ffill()此解决方案假设 2010 年 12 月的数据可以溢出到特定州的 2011 年 1 月的空数据。
随时随地看视频慕课网APP

相关分类

Python
我要回答