我有一个数据帧:
TYPE NAME IS_MAIN
PPRTYPE TIME 0
PPRTYPE SIGHT 0
PPRTYPE SIGHT 1
PNRDTL NOT FOUND 1
PPRTYPE SIGHT 0
PPRTYPE TIME 1
如果TYPE
是PPRTYPE
而NAME
是SIGHT
而IS_MAIN
是1
那么NAME
TYPE
的PNRDTL
应该改为'NOT APPLICABLE'
如果IS_MAIN
是1
。
注意:任何TYPE的IS_MAIN = 1
都只会出现一次。
码:
temp = df.loc[(df['IS_MAIN'] == 1) & (df['TYPE'] == 'PPRTYPE'), 'NAME']
temp = temp.reset_index(drop=True)
temp = temp[0]
if (temp == 'SIGHT'):
df.loc[(df['TYPE'] == 'PNRDTL') & (df['IS_MAIN'] == 1) , 'NAME'] = 'NOT APPLICABLE'
我面临的问题是
(df['TYPE'] == 'PNRDTL') & (df['IS_MAIN'] == 1)
没有得到任何价值,因此价值不会改变。
如果有人能够发现我犯下的错误或告诉我任何解决方法,我会很高兴。
非常感谢。
对我来说工作:
#if `1` is integer
mask = (df['IS_MAIN'] == 1) & (df['TYPE'] == 'PPRTYPE')
#if 1 is string
#mask = (df['IS_MAIN'] == '1') & (df['TYPE'] == 'PPRTYPE')
if (df.loc[mask, 'NAME'].iloc[0] == 'SIGHT'):
df.loc[mask , 'NAME'] = 'NOT APPLICABLE'
print (df)
TYPE NAME IS_MAIN
0 PPRTYPE TIME 0
1 PPRTYPE SIGHT 0
2 PPRTYPE NOT APPLICABLE 1
3 PNRDTL NOT FOUND 1
4 PPRTYPE SIGHT 0
5 PPRTYPE NOT APPLICABLE 1