Skip to main content
 首页 » 编程设计

python之Pandas 有条件地交换两列中的值

2025年05月04日21lyj

我有一个包含两列的 Pandas DataFrame。在一些行中,列被交换了。如果它们被交换,则“a”列将为负数。最好的检查方法是什么,然后交换两列的值。

def swap(a,b): 
    if a < 0: 
        return b,a 
    else: 
        return a,b 

有没有什么方法可以使用 apply 和这个函数来交换两个值?

请您参考如下方法:

试试这个?通过使用 np.where

ary=np.where(df.a<0,[df.b,df.a],[df.a,df.b]) 
pd.DataFrame({'a':ary[0],'b':ary[1]}) 
 
Out[560]:  
   a  b 
0  3 -1 
1  3 -1 
2  8 -1 
3  2  9 
4  0  7 
5  0  4 

数据输入:

df 
Out[561]:  
   a  b 
0 -1  3 
1 -1  3 
2 -1  8 
3  2  9 
4  0  7 
5  0  4 

并使用apply

def swap(x): 
    if x[0] < 0: 
        return [x[1],x[0]] 
    else: 
        return [x[0],x[1]] 
 
 
df.apply(swap,1) 
Out[568]:  
   a  b 
0  3 -1 
1  3 -1 
2  8 -1 
3  2  9 
4  0  7 
5  0  4