Skip to main content
 首页 » 编程设计

python之向量化操作中的 Pandas if 语句

2025年05月04日17cyq1162

df = pd.DataFrame([["a", "d"], ["", ""], ["", "3"]], 
            columns=["a", "b"]) 
df 
    a   b 
0   a   d 
1        
2       3 

我想用这样的 if 语句进行矢量化字符串连接:

df["c"] = df["a"] + "()" + df["b"] if df["a"].item != "" else "" 

但它不起作用,因为 .item 返回一个系列。如果没有遍历每一行的 apply 或 lambda 方法,是否可以这样做?在矢量化操作中,pandas 将尝试一次连接多个单元格并使其更快...

期望的输出:

df 
    a   b   c 
0   a   d   a ()b 
1            
2       3 

请您参考如下方法:

试试这个:使用 np.where()

df = pd.DataFrame([["a", "d"], ["", ""], ["", "3"]], 
            columns=["a", "b"]) 
 
df['c']=np.where(df['a']!='',df['a'] + '()' + df['b'],'') 
print(df) 

输出:

   a  b     c 
0  a  d  a()d 
1             
2     3