基于指定迭代编号合并两个DataFrame的需求实现
Pandas 实现指定行筛选与按位置合并
需求说明
从两个DataFrame df1 和 df2 中分别筛选指定迭代编号的行,再按对应位置横向合并为新的DataFrame df3:
- df1筛选迭代编号:
1_1、2_2、3_3、9_9 - df2筛选迭代编号:
1_1、2_2、5_5、6_6
示例数据
先还原输入的DataFrame:
import pandas as pd df1 = pd.DataFrame({ 'iteration': ['1_1', '2_2', '3_3', '4_4', '5_5', '6_6', '7_7', '8_8', '9_9'], 'IOPS': [46090, 12, 49164, 98311, 196604, 249843, 298974, 348108, 397230], 'Latency': [0.7300, 0.0221, 0.1236, 0.1318, 0.2076, 0.1467, 0.1578, 0.1604, 0.1707] }) df2 = pd.DataFrame({ 'iteration': ['1_1', '2_2', '3_3', '4_4', '5_5', '6_6'], 'IOPS': [46074, 12, 49159, 98307, 298976, 397265], 'Latency': [0.6977, 0.0279, 0.1921, 0.2189, 0.2337, 0.2622] })
实现步骤
- 定义需要筛选的迭代编号列表
df1_filter_list = ['1_1', '2_2', '3_3', '9_9'] df2_filter_list = ['1_1', '2_2', '5_5', '6_6']
- 筛选目标行并重置索引(确保行位置对齐)
# 筛选df1的目标行,重置索引后保留原行顺序 filtered_df1 = df1[df1['iteration'].isin(df1_filter_list)].reset_index(drop=True) # 筛选df2的目标行,重置索引后保留原行顺序 filtered_df2 = df2[df2['iteration'].isin(df2_filter_list)].reset_index(drop=True)
- 按位置横向合并两个筛选后的DataFrame
df3 = pd.concat([filtered_df1, filtered_df2], axis=1)
最终结果
打印df3即可得到目标格式:
iteration IOPS Latency iteration IOPS Latency 0 1_1 46090 0.730 1_1 46074 0.6977 1 2_2 12 0.0221 2_2 12 0.0279 2 3_3 49164 0.1236 5_5 298976 0.2337 3 9_9 397230 0.1707 6_6 397265 0.2622
关键说明
- 使用
isin()方法高效筛选指定迭代编号的行,确保保留原DataFrame中的行顺序 - 重置索引(
reset_index(drop=True))是为了让两个筛选后的DataFrame行索引完全对齐,保证按位置合并的准确性 pd.concat(axis=1)实现横向合并,将两个DataFrame的列依次拼接
内容的提问来源于stack exchange,提问作者user3555115
相关产品推荐
相关产品推荐

