如何使用copy()与append()实现pandas DataFrame按分组扩增指定行数
实现代码
首先导入依赖库:
import pandas as pd import numpy as np
目标函数实现如下:
def augment_dataframe(df, n): # 复制原始数据,避免修改输入的原DataFrame result = df.copy() # 按Name列分组遍历每个用户 for name, _ in df.groupby('Name'): # 构造n行待新增的数据,Cart字段设为np.nan add_rows = pd.DataFrame({ 'Name': [name]*n, 'Cart': [np.nan]*n }) # 用append方法拼接新增行到结果中 result = result.append(add_rows, ignore_index=True) # 按Name排序,保证同用户的原有行和新增行连续排列,重置索引 result = result.sort_values('Name', ignore_index=True) return result
测试示例
# 输入测试数据 df = pd.DataFrame({ 'Name':['Ali', 'Ali', 'Ali', 'Sasha', 'Sasha', 'Sasha'], 'Cart':['book', 'phonecase', 'shirt', 'phone', 'food', 'bag'] }) n = 3 # 调用函数得到输出 output_df = augment_dataframe(df, n) print(output_df)
逻辑说明
- 开头调用
copy()方法复制原始数据,保证函数操作不会修改输入的原DataFrame - 按
Name字段分组后,为每个用户生成指定行数的空数据,Cart字段统一赋值为np.nan - 通过
append()方法完成数据拼接,最后排序重置索引,输出格式和要求的示例完全一致
内容的提问来源于stack exchange,提问作者nisa
相关产品推荐
相关产品推荐

