如何合并这两列?大熊猫

时间:2019-05-23 09:20:44

标签: python python-3.x pandas combinations

我有两列,一列是买方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,所以相同的两个但我需要将它们汇总在一起。我该如何在自己的函数中编写此代码,以允许发生买卖双方交换的情况?

2 个答案:

答案 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