这应该能奏效
import pandas as pd
df = pd.DataFrame({
'GType': ['CAT1', 'CAT3', 'CAT3', 'CAT2'],
'BNM': ['WERT', 'FRGT', None, None],
'XXCV': [None, None, None, None],
'COO': [None, None, None, None],
})
to_nan_xxcv = (df.XXCV.isnull()) & (df.GType.isin(['CAT1', 'CAT2']))
to_nan_rest = (df.COO.isnull() | df.BNM.isnull())
df.loc[to_nan_xxcv, 'XXCV'] = df.loc[to_nan_xxcv, 'XXCV'].fillna('')
df.loc[to_nan_rest, ('COO', 'BNM')] = df.loc[to_nan_rest, ('COO', 'BNM')].fillna('')
print(df)
这个
to_nan_xxcv
将只过滤你想要的,其余的将在屏幕上独立替换
GType
,这显然是你想要的基于期望的输出。
此外,你还可以用
vvv
打电话
.fillna('vvv')