我有两列,一列是买方ID,一列是卖方ID。我试图简单地找出哪种组合最出现。
def twoCptyFreq(df,col1,col2):
cols=[col1,col2]
df['TwoCptys']=df[cols].astype(str).apply('+'.join, axis=1)
return (df)
newdf=twoCptyFreq(tradedf,'BuyerID','SellerID')
我得到了想要的结果,但是有时我会得到1234 + 7651和7651 + 1234,所以相同的两个但我需要将它们汇总在一起。我该如何在自己的函数中编写此代码,以允许发生买卖双方交换的情况?
答案 0 :(得分:3)
您可以按sorted
在lambda函数中对值进行排序:
df['TwoCptys']=df[cols].astype(str).apply(lambda x: '+'.join(sorted(x)), axis=1)
或者在np.sort
转换为2d数组的列中:
df['TwoCptys']= (pd.DataFrame(np.sort(df[cols].values, axis=1))
.astype(str).apply('+'.join, axis=1))
答案 1 :(得分:0)
df=pd.DataFrame({'A':[1,1,1],'B':[2,3,2],'C':[9,9,9]})
df['combination']=df['A'].astype(str) + '+' + df['B'].astype(str)
df['combination'].value_counts()
out[]:
1+2 2
1+3 1
Name: combination, dtype: int64
#This shows combination of df[A] ==1 and df[B] ==2 has more occurences