python - 当键值重复时,如何停止 pandas merge() 函数来做笛卡尔积?

标签 python cartesian-product

a = pd.DataFrame({"a": [1,2], "b": [1,1]})
b = pd.DataFrame({"c": [3,4], "b": [1,1]})
c = a.merge(b, on=['b'], how='inner')

我们将得到有 4 行的 c。但是我们如何通过使用 merge() 函数得到像 {'a':[1,2], 'c':[3,4], 'b':[1,1]} 这样的 c?

最佳答案

这可行。 Pandas 合并在您实现时并不是那么好。

c = pd.concat([a, b], axis=1, join='inner')
c = c.loc[:,~c.columns.duplicated()]
print(c)

返回这个:

   a  b  c
0  1  1  3
1  2  1  4

关于python - 当键值重复时,如何停止 pandas merge() 函数来做笛卡尔积?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74804401/

相关文章:

scheme - 方案中的笛卡尔积

python - 如何使用 python 迭代器生成多个变量的笛卡尔积?

arrays - 笛卡尔幂(一种特殊的笛卡尔积)——以可重复的方式从数组中选择元素

python - 卡住名单副本

python - 以新格式重新组合 JSON 文件

Python 使用带有列表名称的 while 循环

java - Java 8 中流的笛卡尔积作为流(仅使用流)

python - 基于 Python 版本处理依赖项的最佳方法是什么?

python - IPython.parallel ValueError : cannot create an OBJECT array from memory buffer

javascript - JavaScript 中多个数组的笛卡尔积