Python:将两个数据框与索引的所有组合组合起来
Python: combine two data frames with all combinations of index
我有一个包含 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
对于大型数据集,最有效的方法是什么?
您可以创建合并索引:
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
的重复混合,请执行 finally:
merged_df = merged_df[merged_df['id_numberA'] < merged_df['id_numberB']]
我有一个包含 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
对于大型数据集,最有效的方法是什么?
您可以创建合并索引:
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
的重复混合,请执行 finally:
merged_df = merged_df[merged_df['id_numberA'] < merged_df['id_numberB']]