我正在使用以下代碼制作資料框的掩碼。掩碼意味著我對一行中的一個單元格具有特定條件的所有值回傳 TRUE,例如,其中一個單元格值正好是 21。
mask_pipe21 = np.column_stack([output[col].str.contains("^21$", regex=True, na=False) for col in output])
我現在要做的是,不是為包含 21 的行回傳 TRUE,而是為包含 21 的行之后的行回傳 TRUE。
要使用 pandas 指令中的一個更簡單的示例:
s1 = pd.Series(['Mouse', 'dog', 'house and parrot', '23', np.NaN])
s1.str.contains('og', regex=False)
0 False
1 True
2 False
3 False
4 NaN
與此結果不同,我想使用相同的邏輯回傳:
0 False
1 False
2 True
3 False
4 NaN
有人知道我如何用我的代碼行實作這一目標嗎?提前致謝。
uj5u.com熱心網友回復:
嘗試
s1 = pd.Series(['Mouse', 'dog', 'house and parrot', '23', np.NaN])
s1.str.contains('og').shift(1)
>>>
0 NaN
1 False
2 True
3 False
4 False
這不是 100% 你想要的輸出。因此,您可能想在之后更改 NaN 值。
uj5u.com熱心網友回復:
shift一個完整的解決方案是用False, 和mask原始 NaN填充。
(s1.str.contains('og', regex=False)
.shift(fill_value=False)
.mask(s1.isna())
)
輸出:
0 False
1 False
2 True
3 False
4 NaN
dtype: object
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/422934.html
標籤:
