如何在Pandas DataFrame中复制包含PMO的行?
实现复制匹配“PMO”的行并插入原行下方
完全可以实现,下面是两种高效的操作方法:
方法一:逐行处理构造新数据
通过遍历原DataFrame的每一行,判断是否为目标行,若是则同时添加原行和复制行到新数据列表:
import pandas as pd data = [['PMO', 10], ['LOL', 15], ['juli', 14], ['PMO', 10], ['LOL', 15], ['juli', 14]] df = pd.DataFrame(data, columns=['Name', 'Age']) new_data = [] for _, row in df.iterrows(): new_data.append(row) # 匹配"PMO"时添加复制行 if row['Name'] == 'PMO': new_data.append(row.copy()) # 生成新的DataFrame new_df = pd.DataFrame(new_data, columns=df.columns) print(new_df)
运行后输出结果:
Name Age 0 PMO 10 1 PMO 10 2 LOL 15 3 juli 14 4 PMO 10 5 PMO 10 6 LOL 15 7 juli 14
方法二:扩展索引实现(更简洁)
通过扩展索引列表,重复目标行的索引,再重新生成DataFrame:
import pandas as pd data = [['PMO', 10], ['LOL', 15], ['juli', 14], ['PMO', 10], ['LOL', 15], ['juli', 14]] df = pd.DataFrame(data, columns=['Name', 'Age']) # 构建扩展后的索引列表 extended_index = [] for idx in df.index: extended_index.append(idx) if df.loc[idx, 'Name'] == 'PMO': extended_index.append(idx) # 根据扩展索引生成新DataFrame并重置索引 new_df = df.loc[extended_index].reset_index(drop=True) print(new_df)
该方法的输出结果和方法一完全一致,代码更简洁高效。
内容的提问来源于stack exchange,提问作者TimS
相关产品推荐
相关产品推荐

