如何合并DataFrame中名称相同但一列为空、一列有值的列?
合并DataFrame中同名列的方法
你的DataFrame存在重复列名,需要将同名列的非空值整合到同一列中,以下是具体实现方法:
核心代码
import pandas as pd import numpy as np # 构造你的示例DataFrame data = { 'items_group': [np.nan, 'KIT1265', 'KIT1265', 'KIT1198A', np.nan], 'quantity': [np.nan, 7, 6, 6, np.nan], 'items_group': ['KIT1240', np.nan, np.nan, np.nan, 'KIT1264'], 'quantity': [12, np.nan, np.nan, np.nan, 12] } df = pd.DataFrame(data) # 合并同名列 df_merged = df.groupby(df.columns, axis=1).first() print(df_merged)
代码说明
groupby(df.columns, axis=1):按列名对所有列分组,把同名列归为一组first():对每组的每行数据取第一个非空值,自动将分散在不同同名列的非空值整合到同一列下
运行后输出结果即为你期望的格式:
items_group quantity 0 KIT1240 12.0 1 KIT1265 7.0 2 KIT1265 6.0 3 KIT1198A 6.0 4 KIT1264 12.0
扩展说明
如果同名列的同一行存在多个非空值,需要合并所有非空值(比如转为列表),可以改用以下聚合方式:
df_merged = df.groupby(df.columns, axis=1).agg(lambda x: x.dropna().tolist())
内容的提问来源于stack exchange,提问作者Rahul Sharma
相关产品推荐
相关产品推荐

