我有一个包含两列的 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
