假设我有以下Pandas数据框:
a b
0 NAN BABA UN EQUITY
1 NAN 2018
2 NAN 2017
3 NAN 2016
4 NAN NAN
5 NAN 700 HK EQUITY
6 NAN 2018
7 NAN 2017
8 NAN 2016
9 NAN NAN
我想检查列b
中的每个单元格,看看它是否包含字符串EQUITY
。如果是,我想用前一个字符串替换列a
中的单元格(下一行,直到所有NAN
的行),以获得编辑后的数据帧,如下所示:
a b
0 NAN BABA UN EQUITY
1 BABA UN EQUITY 2018
2 BABA UN EQUITY 2017
3 BABA UN EQUITY 2016
4 NAN NAN
5 NAN 700 HK EQUITY
6 700 HK EQUITY 2018
7 700 HK EQUITY 2017
8 700 HK EQUITY 2016
9 NAN NAN
我的实际数据帧比上面的大得多,但格式相似。我对熊猫很陌生,但我想我可以通过使用
sheet.loc
并替换循环中的单元格值。
但是,我很难找出如何检查单元格是否包含EQUITY
。似乎str.contains
是我应该使用的,但我不清楚如何使用它。
谢谢!
收益率
上面有一个稍微棘手的地方是如何定义
mask
。注意str.contains
返回一个序列,该序列不仅包含True
和False
值,而且还包含NaN
:str.contains(..., na=True)
用于将NaN
视为True
:一旦你有了
mask
,这个想法很简单:只要mask
是真的,就把值从b
复制到a
:向前填充
a
中的NaN值:将
a
中的值替换为NaN,只要mask
为真:相关问题 更多 >
编程相关推荐