如果其他列不等于特定字符串,则更新列,否则为空

2024-10-03 17:15:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用熊猫数据帧:

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 

Tags: noipfalseurldfhtmlyestld
2条回答
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

或使用^{}

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

print(df)

相关问题 更多 >