我正在将DataFrame(df1)中的一列与另一个DataFrame合并(df2,两者都具有相同的索引。此操作的结果为我提供了更多我开始使用的行(重复)。有没有办法避免重复?请参阅下面的示例代码来复制我的问题。
df1 = pd.DataFrame([[1, 1.0, 2.3,0.2,0.53], [2, 3.35, 2.0,0.2,0.65], [2,3.4,
2.0,0.25,0.55]],
columns=["Sample_ID", "NaX", "NaU","OC","EC"])\
.set_index('Sample_ID')
df2 = pd.DataFrame([[1,0.2, 1.5, 82], [2, 3.35,2.4,92],[2, 3.4, 2.0,0.25]],
columns=["Sample_ID", "OC","Flow", "Diameter"])\
.set_index('Sample_ID')
df1 = pd.merge(df1,df2['Flow'].to_frame(), left_index=True,right_index=True)
我的结果(下面)有两个条目,样本“2”以3.35开头,然后两个条目为“2”,以3.40开头。
我所期待的只是“2”的两个条目,一个以3.35开头,另一个以“2”开头,以3.40开头。所以总行数应该只有三行,而我现在总共有5行数据。
你能看看这是什么原因吗?谢谢你的帮助!
NaX NaU OC EC Flow
Sample_ID
1 1.00 2.3 0.20 0.53 1.5
2 3.35 2.0 0.20 0.65 2.4
2 3.35 2.0 0.20 0.65 2.0
2 3.40 2.0 0.25 0.55 2.4
2 3.40 2.0 0.25 0.55 2.0
答案 0 :(得分:1)
你想要做的是连接如下:
pd.concat([df1, df2['Flow'].to_frame()], axis=1)
...返回所需的输出。 axis=1
参数让你"粘在"额外的列。
至于为什么您的联接返回Sample_ID = 2
两倍的条目,您可以read through the docs加入。相关部分是:
在SQL /标准关系代数中,如果两个表中的键组合出现多次,则生成的表将具有关联数据的笛卡尔积。