首页 文章

在大型pandas数据帧中填充数据集中的数据

提问于
浏览
0

考虑以下数据帧:

index      group     signal
       1          1         1
       2          1        NAN
       3          1        NAN
       4          1        -1
       5          1        NAN
       6          2        NAN
       7          2        -1
       8          2        NAN
       9          3        NAN
       10         3        NAN
       11         3        NAN
       12         4        1
       13         4        NAN
       14         4        NAN

我想在每个组中通过ffill NANs修改信号,以便我可以拥有以下数据帧:

index      group     signal
       1          1         1
       2          1         1
       3          1         1
       4          1        -1
       5          1        -1
       6          2        NAN
       7          2        -1
       8          2        -1
       9          3        NAN
       10         3        NAN
       11         3        NAN
       12         4        1
       13         4        1
       14         4        1

数据帧很大(大约800,000行,大约有16,000个不同的组),目前我将它放入groupby对象并尝试修改那里的每个组,这非常慢 . 然后我尝试将其转换为pivot_table和ffill(),但数据框太简单,程序会出错 . 有什么建议?谢谢!

1 回答

  • 1

    你能尝试一下吗?

    data_group = data.groupby('group').apply(lambda v: v.fillna(method='ffill'))
    

    我认为在你的数据中 NAN 是一个字符串 . 它不是一个空元素 . 空数据将显示为 NaN . 如果是字符串,请更换 NAN . 喜欢

    data_group = data.groupby('group').apply(lambda v: v.replace('NAN', float('nan')).fillna(method='ffill'))
    

    或者像Jeff建议的更好的版本

    data['signal'] = data['signal'].replace('NAN', float('nan'))
    data = data.groupby('group').ffill()
    

相关问题