我有两个数据框,如何从笛卡尔数据集中删除相似的行
**DF1:**
Index Name
0 xyz
1 abc
2 def
**DF2:**
Index Name
0 xyz
1 abc
2 xyz
**Expected Output**
(0,0),**(0,2)**
(1,1)
我只想组合名称列相同的索引,但是我不想显示重复的组合。也就是说,当我执行笛卡尔索引(0,2)和(2,0)时,会得到相同的结果。所以我只想显示一行。
已更新:
我已经有一个笛卡尔数据框作为输入,这是 (0,0),(0,2),(1,1),(2,0)
我想要的是,我想从此输入数据框中删除重复的(2,0)。而且我在数据框中大约有100行,所以也想循环遍历。
答案 0 :(得分:1)
假设df1
和df2
只有一列“名称”,并且“索引”是索引,并且您想要一个具有匹配索引的元组列表,如问题中所示,您可以这样做:
df1 = pd.DataFrame({'Name': ['xyz', 'abc', 'def']})
df2 = pd.DataFrame({'Name': ['xyz', 'abc', 'xyz']})
df3 = df1.reset_index().merge(df2.reset_index(), on='Name', how='inner')
list_of_tuples = [tuple(item) for item in df3[['index_x', 'index_y']].values]
list_of_tuples
# OUTPUT: [(0, 0), (0, 2), (1, 1)]
如果“索引”是列名,只需删除reset_index()
命令。