Python: объединить два фрейма данных со всеми комбинациями индекса - PullRequest
0 голосов
/ 22 октября 2019

У меня есть фрейм данных с x переменными и id_number 1: n (n большое). Я хочу создать новый фрейм данных, который объединяет каждую пару по горизонтали на основе id_number из фрейма данных. Исходные данные выглядят так:

id_number   var_x1   var_x2   
1           sth      stuff   
2           other    things  
3           more     info  

Я хочу получить это для каждой возможной пары:

id_numberA  var_x1A var_x2A id_numberB var_x1B var_x2B
1           sth     stuff   1          sth     stuff
1           sth     stuff   2          other   things
1           sth     stuff   3          more    info
2           other   things  3          more    info

Какой самый эффективный способ сделать это для большого набора данных?

1 Ответ

0 голосов
/ 22 октября 2019

Вы можете создать индекс слияния с помощью:

df['temp'] = 1

, а затем объединить dataframe с собой:

merged_df = df.merge(df, on='temp', suffixes=('A', 'B')).drop('temp', axis=1)

Если вы не хотите, чтобы комбинациито же самое id_number, сделайте наконец:

merged_df = merged_df[merged_df['id_numberA'] != merged_df['id_numberB']]

И если вы не хотите дублировать миксы id_numberA и id_numberB, сделайте, наконец, вместо:

merged_df = merged_df[merged_df['id_numberA'] < merged_df['id_numberB']]
...