Python:将两个数据框与所有索引组合相结合

时间:2019-10-22 08:49:53

标签: python dataframe merge melt

我有一个带有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 :(得分:0)

您可以使用以下方法创建合并索引:

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_numberAid_numberB,请改为:

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