Python Dataframe:如果列中的值等于字符串并且第二列中的值为空,则用另一个字符串替换空单元格

问题描述 投票:0回答:1

我有以下示例 python 数据框:

类型 价值
A 芝麻
B
A
C
A 小圆面包

创建表格的代码如下:

import pandas as pd
df = pd.DataFrame({'Type':["A","B","A", "C", "A"],'Value':["sesame", None, None, "tea", "bun"]})

我想做以下事情:

  • 如果类型列等于“A”并且值列为空,则将空值替换为“custard”
  • 如果类型列等于“B”并且值列为空,则将空值替换为“peanuts”
  • 否则保留值列不变

我想要的输出表如下:

类型 价值
A 芝麻
B 花生
A 蛋奶冻
C
A 小圆面包

我什至似乎无法弄清楚第一个要点。我尝试了以下代码:

df.loc[df['Type'] == 'A', ['Value']].fillna(value='custard', axis=1)

但它产生了错误的输出:

python filter replace conditional-statements null
1个回答
0
投票
import pandas as pd
df = pd.DataFrame({'Type':["A","B","A", "C", "A"],'Value':["sesame", None, None, "tea", "bun"]})
df.loc[df.query("Value!=Value and Type == 'A'").index,'Value'] = 'custard'
df.loc[df.query("Value!=Value and Type == 'B'").index,'Value'] = 'peanuts'
df
    Type    Value
--  ------  -------
 0  A       sesame
 1  B       peanuts
 2  A       custard
 3  C       tea
 4  A       bun
© www.soinside.com 2019 - 2024. All rights reserved.