python - Pandas:以唯一值为条件的连接

标签 python pandas set concatenation

我正在连接两个 Pandas 数据帧,如下所示。

part1 = pd.DataFrame({'id'    :[100,200,300,400,500], 
                   'amount': np.random.randn(5)
                    })

part2 = pd.DataFrame({'id'    :[700,100,800,500,300], 
                   'amount': np.random.randn(5)
                    })

concatenated = pd.concat([part1, part2], axis=0)
     amount   id
0 -0.458653  100
1  2.172348  200
2  0.072494  300
3 -0.253939  400
4 -0.061866  500
0 -1.187505  700
1 -0.810784  100
2  0.321881  800
3 -1.935284  500
4 -1.351507  300

如果行 id 尚未出现在 part2 中,如何限制操作,以便仅将 part2 中的行包含在 concatenated第 1 部分?在某种程度上,我想将 id 列视为一个集合。

是否可以在 concat() 期间执行此操作,或者这更像是一个后处理步骤?

此示例所需的输出为:

concatenated_desired
     amount   id
0 -0.458653  100
1  2.172348  200
2  0.072494  300
3 -0.253939  400
4 -0.061866  500
0 -1.187505  700
2  0.321881  800

最佳答案

concat()之后调用drop_duplicates():

part1 = pd.DataFrame({'id'    :[100,200,300,400,500], 
                   'amount': np.arange(5)
                    })

part2 = pd.DataFrame({'id'    :[700,100,800,500,300], 
                   'amount': np.random.randn(5)
                    })

concatenated = pd.concat([part1, part2], axis=0)
print concatenated.drop_duplicates(cols="id")

关于python - Pandas:以唯一值为条件的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21185585/

相关文章:

python - 有条件地用 pandas 替换

iphone - 在 Linux 上设置 iPhone sdk?

c++ - 生成不重复的字符串排列

python - Pygame 与。 Tkinter ?

python - 如何更新 MultiIndexed pandas DataFrame 的子集

python - datetime 对象是否需要深度复制?

python - 为什么向字典中的集合添加一个元素,所有集合都会被修改? (Python)

python - 二叉搜索树最大值

python - 将所有列设置为索引,或将数据帧转换为多索引系列

python - 将 Pandas groupby group 转换为列