如何将Pandas数据框列表中ub列合并至首个数据框并重命名
解决方案
假设你的数据框列表叫 dfs,而且所有数据框的行索引完全一致,可以用下面两种方法实现需求:
方法一:逐行合并(用join)
- 先把第一个数据框的
lb列抽出来当结果的基础 - 挨个处理列表里剩下的每个数据框,把它们的
ub列重命名成ub0、ub1...,再合并到结果里
import pandas as pd # 保留第一个df的lb列作为初始结果 result = dfs[0][['lb']].copy() # 从第二个df开始遍历 for idx, df in enumerate(dfs[1:], start=0): # 提取ub列并重命名,再合并到结果 result = result.join(df['ub'].rename(f'ub{idx}'))
方法二:批量拼接(用concat)
先把所有需要的列收集好——第一个df的lb、后面每个df重命名后的ub,再一次性拼起来:
import pandas as pd # 先把第一个df的lb列放进列表 columns_to_merge = [dfs[0]['lb']] # 处理剩下的df,把ub列重命名后加入列表 for idx, df in enumerate(dfs[1:], start=0): columns_to_merge.append(df['ub'].rename(f'ub{idx}')) # 按列拼接所有列 result = pd.concat(columns_to_merge, axis=1)
额外情况:保留第一个df的原ub列
如果你想把第一个数据框原本的ub列也保留,命名为ub0,后面的依次叫ub1、ub2...,可以这么改:
# 保留第一个df的lb和ub,把ub改名为ub0 result = dfs[0].rename(columns={'ub': 'ub0'}).copy() # 合并后续df的ub列,命名为ub1、ub2... for idx, df in enumerate(dfs[1:], start=1): result = result.join(df['ub'].rename(f'ub{idx}'))
因为所有数据框的行索引完全一致,上面的方法都会自动按索引对齐,不用额外设置匹配条件。
内容的提问来源于stack exchange,提问作者therickster
相关产品推荐
相关产品推荐

