Python Pandas根据时间序列中缺少的顺序值添加行


问题内容

我是python的新手,正在努力操作pandas库中的数据。我有一个像这样的熊猫数据库:

    Year  Value
0    91     1
1    93     4
2    94     7
3    95    10
4    98    13

并希望完成缺少的年份,以创建具有空值的行,如下所示:

    Year  Value
0    91     1
1    92     0
2    93     4
3    94     7
4    95    10
5    96     0
6    97     0
7    98    13

我该如何在Python中做到这一点?(我想这样做,所以我可以绘制值而不用跳过年)


问题答案:

我将创建一个以Year为索引的新数据框,其中包括您需要涵盖的整个日期范围。然后,您可以简单地跨两个数据框设置值,索引将确保它们匹配正确的行(我不得不使用fillna将缺失的年份设置为零,默认情况下,它们将设置为NaN):

df = pd.DataFrame({'Year':[91,93,94,95,98],'Value':[1,4,7,10,13]})
df.index = df.Year
df2 = pd.DataFrame({'Year':range(91,99), 'Value':0})
df2.index = df2.Year

df2.Value = df.Value
df2= df2.fillna(0)
df2
      Value  Year
Year             
91        1    91
92        0    92
93        4    93
94        7    94
95       10    95
96        0    96
97        0    97
98       13    98

最后,reset_index如果您不想将Year作为索引,则可以使用:

df2.drop('Year',1).reset_index()

   Year  Value
0    91      1
1    92      0
2    93      4
3    94      7
4    95     10
5    96      0
6    97      0
7    98     13