如何在pandas DataFrame的特定数据后添加空白行
对应Excel场景的同类需求翻译:如何在一组数据后自动插入空白行
pandas实现指定位置插入空白行方案
pandas未提供专门用于该需求的内置函数,可通过分组拼接、索引重排两种方式分别适配不同场景,具体实现如下:
场景1:按指定列的同值分组后插入空白行
适用于和Excel同类需求一致的、给每个同值分组末尾加空白行的场景。
示例代码
import pandas as pd # 构造测试数据 df = pd.DataFrame({ '类别': ['A', 'A', 'B', 'B', 'B', 'C'], '数值': [1, 2, 3, 4, 5, 6] }) # 指定分组依据列 group_col = '类别' # 对每个分组末尾拼接空白行后合并 result = pd.concat( [group.append(pd.Series(dtype='object'), ignore_index=True) for _, group in df.groupby(group_col, sort=False)], ignore_index=True ) # 若不需要最后一个分组后也保留空白行,添加以下代码删除末尾空行 result = result.iloc[:-1]
场景2:在指定列的特定值所在行后插入空白行
适用于仅需要给指定列匹配到特定值的行后加空白行的场景。
示例代码
import pandas as pd # 构造测试数据 df = pd.DataFrame({ '类别': ['A', 'A', 'B', 'B', 'B', 'C'], '数值': [1, 2, 3, 4, 5, 6] }) # 指定目标列和要匹配的特定值 target_col = '类别' target_value = 'B' # 查找所有匹配行的索引 match_index = df[df[target_col] == target_value].index # 计算空白行插入位置(每插一行后续插入位置依次后移一位) insert_pos = match_index + 1 + pd.Series(range(len(match_index)), index=match_index) # 重排索引插入空行,重置索引后得到结果 result = df.reindex(df.index.union(insert_pos)).reset_index(drop=True)
注意事项
- 如需自定义空白行的填充内容,可将上述代码中的
pd.Series(dtype='object')替换为指定内容的Series,例如pd.Series({'类别': '小计', '数值': None}) - 处理十万行以上的大数据集时,优先使用上述向量化操作,避免逐行遍历插入导致性能大幅下降
内容的提问来源于stack exchange,提问作者Rekcoj
相关产品推荐
相关产品推荐

