如何基于行名的公共片段合并两个Data Frame
合并方案
核心逻辑是先从两个DataFrame的行名中提取公共前缀作为关联匹配键,再基于该键完成合并,以下是Python Pandas环境下的具体实现:
- 第一步:为两个DataFrame分别新增关联键列,提取行名
-分隔符前的公共前缀作为键值
假设第一个存Ask Price的DataFrame名为df_ask,第二个存Strike Price的名为df_strike,代码如下:# 提取-前的公共前缀作为合并键 df_ask['merge_key'] = df_ask.index.str.split('-').str[0] df_strike['merge_key'] = df_strike.index.str.split('-').str[0] - 第二步:基于公共键执行合并,可按需选择合并模式:两个前缀完全一一对应选
inner内连接,需要保留所有存在的前缀选outer外连接# 内连接合并,仅保留两个表都有的前缀对应数据 merged_df = df_ask.merge(df_strike, on='merge_key', how='inner') - 第三步(可选):如果需要恢复行名格式,可将合并键设为新索引
merged_df = merged_df.set_index('merge_key')
适配扩展说明
如果行名的分隔规则不统一,也可以用正则精准提取固定格式的公共部分作为匹配键,比如匹配Call.Dec.四位年份的规则:
df_ask['merge_key'] = df_ask.index.str.extract(r'(Call\.Dec\.\d{4})', expand=False)
如果是R语言场景,逻辑完全一致:用stringr包提取公共键后,调用dplyr包的inner_join等函数合并即可。
内容的提问来源于stack exchange,提问作者DeltaDelta
相关产品推荐
相关产品推荐

