gpt4 book ai didi

Python:如果其他两列在同一行中包含 'No' 字符串,则从行中删除字符串值

转载 作者:太空宇宙 更新时间:2023-11-04 09:47:38 25 4
gpt4 key购买 nike

我在 pandas 数据框中有以下示例表。

Col1       Col2        Col3     Col4          Col5
No 4/30/2018 No
No 4/30/2018 No
Await AIR 7/15/2015 Yes 4/30/2018 No
Await LER 7/15/2015 No 4/30/2018 No
Await TEE 7/15/2015 No 4/30/2018 No

我要实现的逻辑如下:如果 Col3 为“否”且 Col5 为“否”,我想删除 Col1 中的字符串(如果它不是空白的话)并将其设为空白。

下面是我想要的输出表:

Col1       Col2        Col3     Col4          Col5
No 4/30/2018 No
No 4/30/2018 No
Awaiting 7/15/2015 Yes 4/30/2018 No
7/15/2015 No 4/30/2018 No
7/15/2015 No 4/30/2018 No

我想我有 if 语句,但不知道如何编写逻辑的其余部分:

if df_EVENT5_21['shipping_filter'] == 'No' and df_EVENT5_21['shipping_filter_2'] == 'No':
...

最佳答案

使用pd.DataFrame.mask

df[['Col1']].mask(df[['Col3', 'Col5']].eq('No').all(1), '')

Col1
0
1
2 Await AIR
3
4

我们可以使用 pd.DataFrame.assign 进行流水线处理

df.assign(
**df[['Col1']].mask(df[['Col3', 'Col5']].eq('No').all(1), '')
)

Col1 Col2 Col3 Col4 Col5
0 No 4/30/2018 No
1 No 4/30/2018 No
2 Await AIR 7/15/2015 Yes 4/30/2018 No
3 7/15/2015 No 4/30/2018 No
4 7/15/2015 No 4/30/2018 No

或使用 pd.DataFrame.update

df.update(df[['Col1']].mask(df[['Col3', 'Col5']].eq('No').all(1), ''))
df

Col1 Col2 Col3 Col4 Col5
0 No 4/30/2018 No
1 No 4/30/2018 No
2 Await AIR 7/15/2015 Yes 4/30/2018 No
3 7/15/2015 No 4/30/2018 No
4 7/15/2015 No 4/30/2018 No

或者不用双括号

df.assign(
Col1=df.Col1.mask(df[['Col3', 'Col5']].eq('No').all(1), '')
)

或者

df.update(df.Col1.mask(df[['Col3', 'Col5']].eq('No').all(1), ''))
df

关于Python:如果其他两列在同一行中包含 'No' 字符串,则从行中删除字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49156434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com