【发布时间】:2018-03-26 15:36:26
【问题描述】:
我正在将一些东西从 R 转换到 Python,并且对高效合并感到好奇。我在 NumPy 中的 concatenate 上找到了一些东西(使用 NumPy 进行操作,所以我想坚持使用它),但它没有按预期工作。
取两个数据集
d1 = np.array([['1a2', '0'], ['2dd', '0'], ['z83', '1'], ['fz3', '0']])
ID Label
1a2 0
2dd 0
z83 1
fz3 0
和
d2 = np.array([['1a2', '33.3', '22.2'],
['43m', '66.6', '66.6'],
['z83', '12.2', '22.1']])
ID val1 val2
1a2 33.3 22.2
43m 66.6 66.6
z83 12.2 22.1
我想将这些合并在一起,结果是
d3
ID Label val1 val2
1a2 0 33.3 22.2
z83 1 12.2 22.1
因此,它会识别出与 ID 列匹配的行,然后将它们连接在一起。这在 R 中使用 merge 相对简单,但在 NumPy 中对我来说不太明显。
有没有办法在我缺少的 NumPy 中本地执行此操作?
【问题讨论】:
-
您是否严格限制为
numpy?大多数人使用pandas来匹配 R 的功能。pd.merge -
我并不反对使用 pandas,但是我认为在 pandas 和 numpy 之间进行交换(因为我计划稍后使用 numpy 进行操作)效率低下。不过,我在这里可能是错的。
-
我会为 Pandas 的建议 +1。 Pandas DataFrames 构建在 NumPy 数组之上。 Pandas 最适合您问题中描述的操作,您可以随时使用
df.values访问 Pandas DataFramedf的底层 Numpy 数组。