【发布时间】:2020-03-10 01:34:04
【问题描述】:
我有一个多索引、多列数据框:
start A B C D
0 2019 35.156667 51.621111 18.858684 1
1 2019 NaN 50.211905 18.991290 -1
2 2019 42.836250 58.778235 18.788889 1
3 2020 NaN 8.188000 17.805833 1
4 2020 42.568000 55.907143 17.300000 -1
5 2021 46.458333 42.293750 26.322500 1
6 2021 43.675000 60.475000 29.520000 1
每年(“开始”列)我想在 A 列中填充 NaN,如果 D>0,则使用前向值,如果 D
start A B C D
0 2019 35.156667 51.621111 18.858684 1
1 2019 35.156667 50.211905 18.991290 -1
2 2019 42.836250 58.778235 18.788889 1
3 2020 42.568000 8.188000 17.805833 1
4 2020 42.568000 55.907143 17.300000 -1
5 2021 46.458333 42.293750 26.322500 1
6 2021 43.675000 60.475000 29.520000 1
我正在尝试:
df[['A','D']] = df.groupby('start').apply(lambda x: x['A'].fillna(method='ffill') if x['D']>0 else x['A'].fillna(method='bfill'))
但我收到如下错误:
The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
有什么帮助吗?谢谢
【问题讨论】:
标签: python pandas group-by apply