我正在使用熊猫数据帧:
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)