我的数据分为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
.
.
我想用与 Year 相同的以前的 Values 重复来填充丢失的 Months ,因为它们只是我的累计金额已添加到一起。
月份不一定总是从第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
答案 0 :(得分:1)
一种解决方案是使用Categorical Data:
# convert Month to categorical with 1-12 range
df['Month'] = pd.Categorical(df['Month'], categories=range(1, 13))
# groupby to give Cartesian product for categorical columns
df = df.groupby(['State', 'Year', 'Month']).first().reset_index()
# forward fill by group
df['Value'] = df.groupby('State')['Value'].ffill()
该解决方案假定2010年12月的数据可以溢出到特定状态的2011年1月的空数据。