如何删除多索引DataFrame中仅含单一年份记录的Unit行?
嗨Jenny,这个需求其实很容易实现,我们只需要先找出那些拥有多个年份记录的Unit,再过滤掉剩下的就行啦,给你两种简单的方法:
方法一:分步筛选(直观易懂)
首先我们先统计每个Unit对应的年份条目数量,然后筛选出数量大于1的Unit,最后用这些Unit来过滤原DataFrame:
# 统计每个Unit的年份记录数 unit_year_counts = new_df.groupby(level='Unit').size() # 提取出有多个年份的Unit valid_units = unit_year_counts[unit_year_counts > 1].index # 过滤得到目标DataFrame filtered_df = new_df.loc[valid_units]
运行后filtered_df就是你想要的结果,会自动保留Unit1、2、6的所有行,去掉只有单一年份的Unit3、4、5。
方法二:链式写法(简洁高效)
如果你喜欢更紧凑的代码,可以用groupby的filter方法,直接对每个Unit组进行判断,保留长度大于1的组:
filtered_df = new_df.groupby(level='Unit').filter(lambda x: len(x) > 1)
这个方法一步到位,效果和上面完全一样,适合追求代码简洁的场景。
你可以根据自己的习惯选择其中一种,两种方法都能完美解决你的问题~
内容的提问来源于stack exchange,提问作者jenny
相关产品推荐
相关产品推荐

