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

标签 python pandas row

我是 python 的新手,并且很难在 pandas 库中操作数据。我有一个像这样的 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

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

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

关于Python Pandas 根据时间序列中缺失的顺序值添加行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30564610/

相关文章:

python - 安排脚本在固定时间后执行?

python - 计算数据框中列中的每个值

python - 在 Python 中转换 pandas 数据框

oracle - 当 Oracle 表中不存在该行时,使用 IN 条件返回该行

Python 字符串段操作

python - 模型- View -呈现器和三层?

python - 比较 Pandas 数据框的行(行有一些重叠的值)

mysql - 如何从 Mysql_fetch_array 获取单行/数据?

sql - Oracle 将多列合并为一列

python - AWS Lambda 中的 get_remaining_time_in_millis 的替代方案可用于 Google Cloud Function?