如何基于索引合并两个DataFrame?按重复索引复制首表对应行
基于索引复制行并合并Pandas DataFrame的实现方法
需求说明
现有两个Pandas DataFrame:
- 第一个DataFrame:共3414行,索引从0开始,包含
Start_Year和End_Year两列 - 第二个DataFrame:共31170行,索引从0开始且存在重复值,存储object类型的列表数据(示例列名为
new_col)
需要基于索引合并二者,让第一个DataFrame的行根据第二个DataFrame对应索引的重复次数复制,最终生成包含两表数据的新DataFrame,示例格式如下:
Start_Year End_Year new_col 0 1500 1500 [KingdomofPoland, Georgia] 0 1500 1500 [GrandDuchyofLithuania, Georgia] 1 1500 1501 [NorthernYuanDynasty, Georgia] 2 1500 1700 [SpanishEmpire, ChechenRepublic] 2 1500 1700 [CaptaincyGeneralofChile, ChechenRepublic] ...... 3411 2019 2019 [SyrianOpposition, SpanishEmpire] 3412 2019 2022 [UnitedStates, SpanishEmpire] 3412 2019 2022 [UnitedKingdom, SpanishEmpire] 3412 2019 2022 [SaudiArabia, SpanishEmpire] .......
实现代码
1. 读取数据
import pandas as pd # 替换为实际文件路径 df1 = pd.read_csv("path/to/your/first_dataframe.csv") df2 = pd.read_csv("path/to/your/second_dataframe.csv")
2. 合并并复制行
利用Pandas的索引定位功能,直接根据第二个DataFrame的索引序列重复提取第一个DataFrame的对应行,再按列拼接:
# 按df2的索引重复提取df1的行,然后与df2拼接 merged_df = pd.concat([df1.loc[df2.index].reset_index(drop=True), df2.reset_index(drop=True)], axis=1)
验证结果
合并后的DataFrame行数应与第二个DataFrame一致(31170行),且每个原索引对应的Start_Year、End_Year值会重复对应次数。
内容的提问来源于stack exchange,提问作者Aalekh Roy
相关产品推荐
相关产品推荐

