Как мне объединить эти две колонки?Панды - PullRequest
1 голос
/ 23 мая 2019

У меня есть два столбца, один - Идентификатор покупателя, а второй - Идентификатор продавца. Я пытаюсь просто выяснить, какая комбинация обоих выглядит наиболее.

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 ]

3 голосов
/ 23 мая 2019

Вы можете сортировать значения - в лямбда-функции по sorted:

df['TwoCptys']=df[cols].astype(str).apply(lambda x: '+'.join(sorted(x)), axis=1)

или в столбцах, преобразованных в 2d-массив по np.sort:

df['TwoCptys']= (pd.DataFrame(np.sort(df[cols].values, axis=1))
                   .astype(str).apply('+'.join, axis=1))
0 голосов
/ 23 мая 2019
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...