此刻,我有一个数据框架,如下所示:
date B C D E
0 04/06/2019 258 994 761 [1, 46, 36, 7457, 456]
1 05/06/2019 748 181 565 [22, 3453, 45]
2 06/06/2019 357 290 98 []
2 07/06/2019 185 876 107 [4976, 46, 57, 7, 3]
3 08/06/2019 241 386 728 [4, 6457, 4]
4 09/06/2019 516 579 596 [65]
5 10/06/2019 96 579 596 []
6 11/06/2019 847 109 279 []
我需要实现的是:
date B C D E
0 04/06/2019 258 994 761 [1, 46, 36, 7457, 456]
1 05/06/2019 748 181 565 [22, 3453, 45]
2 06/06/2019 357 290 98 [45]
2 07/06/2019 185 876 107 [4976, 46, 57, 7, 3]
3 08/06/2019 241 386 728 [4, 6457, 4]
4 09/06/2019 516 579 596 [65]
5 10/06/2019 96 579 596 [65]
6 11/06/2019 847 109 279 [65]
我知道对于数字数据,我可以使用类似这样的东西:
df.E = df.E.fillna(method='ffill')
但是我现在不知道该怎么做。你能帮我吗?
答案 0 :(得分:2)
首先获取列表的最后一个值,然后向前填充缺失值:
s = df.E.apply(lambda x: [x[-1]] if len(x) > 0 else np.nan)
df.E = df.E.mask(s.isna(), s.ffill())
print (df)
date B C D E
0 04/06/2019 258 994 761 [1, 46, 36, 7457, 456]
1 05/06/2019 748 181 565 [22, 3453, 45]
2 06/06/2019 357 290 98 [45]
2 07/06/2019 185 876 107 [4976, 46, 57, 7, 3]
3 08/06/2019 241 386 728 [4, 6457, 4]
4 09/06/2019 516 579 596 [65]
5 10/06/2019 96 579 596 [65]
6 11/06/2019 847 109 279 [65]