如何将DataFrame中同名字段的多列数据合并为对应行数据
以下是基于Python pandas库的实现方案:
如果仅需将1.name的值追加到0.name列末尾,可直接使用上下拼接方法:
# 将1.name列的值追加到0.name列下方 df['0.name'] = pd.concat([df['0.name'], df['1.name']], ignore_index=True) # 如不需要保留原始1.name列,可执行删除操作 df = df.drop(columns=['1.name'])
如果需要批量处理所有带数字前缀的同名字段(比如同时处理0.name、1.name…27.name,以及0.age、1.age等其他同名字段),可通过列名分组批量拼接:
import pandas as pd # 按实际字段名分组列名,拆分数字前缀和字段名 col_groups = {} for col in df.columns: # 仅按第一个英文句号拆分,避免字段名本身带句号的场景出错 prefix, field_name = col.split('.', maxsplit=1) col_groups.setdefault(field_name, []).append(col) new_dfs = [] for field, cols in col_groups.items(): # 将同字段的所有前缀列上下拼接,生成单字段的DataFrame field_series = pd.concat([df[col] for col in cols], ignore_index=True) new_dfs.append(field_series.to_frame(name=field)) # 横向拼接所有字段,得到最终规整后的DataFrame final_df = pd.concat(new_dfs, axis=1)
如果拼接后需要去除空值,可以在concat方法后追加.dropna().reset_index(drop=True)。
内容的提问来源于stack exchange,提问作者Tamara2607
相关产品推荐
相关产品推荐

