【问题标题】:Python Pandas add rows based on missing sequential values in a timeseriesPython Pandas 根据时间序列中缺失的顺序值添加行
【发布时间】:2015-06-01 01:51:50
【问题描述】:

我是 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 中做到这一点? (我想这样做,这样我就可以在不跳过年份的情况下绘制价值)

【问题讨论】:

    标签: python pandas row


    【解决方案1】:

    我将创建一个以年份为索引的新数据框,并包含您需要涵盖的整个日期范围。然后您可以简单地设置两个数据框的值,索引将确保它们正确的行匹配(我不得不使用 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
    

    【讨论】:

    • 非常感谢,成功了! :)
    猜你喜欢
    • 2020-12-13
    • 2018-08-24
    • 2020-03-19
    • 1970-01-01
    • 2017-11-09
    • 2016-07-02
    • 2018-06-11
    • 2020-10-23
    • 2022-09-25
    相关资源
    最近更新 更多