如何基于索引列表合并Pandas DataFrame行(保留更长列表行)
Pandas基于索引列表按规则合并行的解决方案
首先构造你给出的原始DataFrame:
import pandas as pd df = pd.DataFrame({ 'A': [1, 2, 3, 4], 'B': [[1,2,3], [4,5,6], [7,8], [2,3]] }, index=[1,2,3,4])
接下来按照你的规则处理:遍历指定的索引组,每组内保留B列列表长度更长的行,删除另一个。具体代码如下:
# 指定的索引组列表 index_groups = [[1,4]] for group in index_groups: # 获取组内每行B列的长度 len_dict = {idx: len(df.loc[idx, 'B']) for idx in group} # 找出长度最大的索引(若长度相同可按需调整,这里取第一个) keep_idx = max(len_dict, key=len_dict.get) # 确定要删除的索引 drop_idx = [idx for idx in group if idx != keep_idx] # 删除行 df = df.drop(drop_idx) print(df)
运行后输出结果:
A B 1 1 [1, 2, 3] 2 2 [4, 5, 6] 3 3 [7, 8]
代码说明
- 遍历每个索引组,用字典存储组内每个索引对应的
B列列表长度 - 通过
max函数筛选出长度最长的索引作为保留项 - 过滤出需要删除的索引,调用
drop方法移除目标行
内容的提问来源于stack exchange,提问作者chrisC
相关产品推荐
相关产品推荐

