【问题标题】:fill missing days in pandas dataframe填补熊猫数据框中缺失的天数
【发布时间】:2018-08-14 14:55:48
【问题描述】:

给定数据框

df = pd.DataFrame(data=[[1,1,3],[1,2,6],[1,4,3],[2,2,6]],columns=['ID','Day','Value'])

df
Out[58]: 
   ID  Day  Value
0   1    1      3
1   1    2      6
2   1    4      3
3   2    2      6

正如您所见,对于 ID = 1,缺少与 Day3 相关的值,对于 ID =2,缺少与 Day1 相关的值......我想通过添加 np.nan 和缺失的日子来填补这些空白。 .

Out[59]: 
   ID  Day  Value
0   1    1    3.0
1   1    2    6.0
2   1    3    NaN
3   1    4    3.0
4   2    1    NaN
5   2    2    6.0

【问题讨论】:

    标签: python pandas dataframe nan missing-data


    【解决方案1】:

    您需要定义一个执行某些重新索引逻辑的自定义函数:

    def f(x):
        return x.set_index('Day').reindex(
                   np.arange(1, x.Day.max() + 1)
              ).Value
    

    现在,执行groupby + apply

    df.groupby('ID').apply(f).reset_index()
    
       ID  Day  Value
    0   1    1    3.0
    1   1    2    6.0
    2   1    3    NaN
    3   1    4    3.0
    4   2    1    NaN
    5   2    2    6.0
    

    【讨论】:

    • 帮助理解问题的道具。在我阅读此答案之前,我不确定 OP 认为他丢失了哪些数据。
    猜你喜欢
    • 2016-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-06
    • 2019-08-01
    • 1970-01-01
    相关资源
    最近更新 更多