基于条件合并Pandas DataFrame中的行
按SI.No.合并DataFrame行的解决方案
核心思路
通过groupby按SI.No.分组,再用聚合函数将同一分组内的多行数据合并为单行,保留各列的有效非空值。
代码实现
假设你的CSV文件已读取为DataFrame,执行以下代码:
import pandas as pd # 读取CSV数据 df = pd.read_csv('test_data.csv') # 按SI.No.分组,合并同一编号的行(取各列第一个非空值) merged_df = df.groupby('SI.No.', as_index=False).first() # 如果需要合并同一列的多个非空值(比如文本拼接),可以用下面的聚合方式 # merged_df = df.groupby('SI.No.', as_index=False).agg(lambda x: ', '.join(x.dropna().astype(str)))
代码说明
groupby('SI.No.'):将DataFrame按SI.No.列的数值分组,把编号相同的行归为一组。as_index=False:保留SI.No.作为普通列,不设为索引,方便后续使用。.first():对每个分组的每一列,取第一个非空值(自动忽略NaN),刚好匹配你提供的数据结构(同一编号的行各列互补,无重复非空值)。- 如果存在同一列多值的情况,替换为
agg(lambda x: ', '.join(x.dropna().astype(str))),可以把同列的非空值用逗号拼接成字符串。
内容的提问来源于stack exchange,提问作者Chauhan240
相关产品推荐
相关产品推荐

