如果其他列不等于特定字符串,则 Pandas 更新列,否则什么都没有



我正在使用熊猫数据帧:

df
Url_Sub_Fld   Url_Tld  MultipleExtensions  HTML_Encoded  contains_ip    ip
0 tel                    no                  yes           False          na
1 li                     no                  no            False          na
2 148.50                 yes                 no            True           191.88.148.50

我想根据 ip 列更新Url_Sub_Fld列。 如果ip列不是na则使用ip中的值并使用该字符串更新Url_Sub_Fld列。

期望输出:

df
Url_Sub_Fld   Url_Tld  MultipleExtensions  HTML_Encoded  contains_ip    ip
0 tel                    no                  yes           False          na
1 li                     no                  no            False          na
2 191.88.148.50          yes                 no            True           191.88.148.50 
df['Url_Sub_Fld']= np.where(df['ip']!= 'na', df['ip'], df['Url_Sub_Fld'])

输出

Url_Sub_Fld     Url_Tld MultipleExtensions  HTML_Encoded    contains_ip     ip
0   tel     no  yes     False   na
1   li  no  no  False   na
2   191.88.148.50   yes     no  True    191.88.148.50

下面是使用布尔索引的一种方法:

df.loc[df.ip.ne('na'), 'Url_Sub_Fld'] = df.ip

print(df)
Url_Sub_Fld Url_Tld MultipleExtensions HTML_Encoded  contains_ip  
0              0     tel                 no          yes        False   
1              1      li                 no           no        False   
2  191.88.148.50  148.50                yes           no         True   
ip  
0             na  
1             na  
2  191.88.148.50

或使用Series.where

df['Url_Sub_Fld'] = df.Url_Sub_Fld.where(df.ip.eq('na'), df.ip)
print(df)

最新更新