You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中按共同索引拼接仅含同键行的DataFrame/数组?

问题描述

我有两个CSV文件:

第一个文件内容:

index,X,Y
1,1.0,2.0
3,1.3,2.3

第二个文件内容:

index,Z
1,3.0

我需要在Python中读取这两个文件,拼接成一个m×4的numpy数组,规则是仅保留两个文件中均存在索引的行。预期结果如下(DataFrame或数组均可):

index,X,Y,Z
1,1.0,2.0,3.0

我自己写了50行代码实现,但不够Pythonic,希望用更简洁、经过充分测试的方案,要求用到numpy和/或pandas。

解决方案

用pandas可以用极简代码完成需求,步骤清晰且经过官方测试:

import pandas as pd
import numpy as np

# 读取文件并将index列设为索引
df1 = pd.read_csv('file1.csv', index_col='index')
df2 = pd.read_csv('file2.csv', index_col='index')

# 内连接合并,仅保留共同索引的行
merged_df = df1.join(df2, how='inner')

# 转为numpy数组(如果不需要DataFrame的话)
merged_array = merged_df.to_numpy()

# 输出结果
print(merged_df)
print(merged_array)

运行结果

  • 输出的DataFrame完全符合预期:
X    Y    Z
index             
1     1.0  2.0  3.0
  • 对应的numpy数组为:
[[1. 2. 3.]]

关键说明

  • how='inner'是核心:内连接会自动匹配两个DataFrame的索引,只保留同时存在的索引行,完美契合需求
  • 相比手动遍历索引、拼接数组的写法,pandas内置方法性能更优,代码简洁易维护
  • 若只需要numpy数组,直接调用to_numpy()即可完成转换

内容的提问来源于stack exchange,提问作者Andy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 18:22:09