You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修正Pandas代码,获取count最高且missing_values最小的行?

问题与解决方法

数据样本

missing_values  count
0               51
3               1
12              12
13              1
15              1
16              1
21              1
35              2
36              3
40              1

原代码

# Get the count of each missing value
missing_value_count = missing_values.iloc[:, 0:1].value_counts().to_frame()
missing_value_count.sort_index(inplace=True)

missing_value_count.to_csv('question.csv')
    
missing_value_count.agg(lambda s: pd.Series([*s.nlargest().index, *s.nsmallest().index],
                       ['missing_values']),
                       axis='columns')

运行错误

missing_value_count.agg(lambda s: pd.Series([*s.nlargest().index, *s.nsmallest().index],
                       ['missing_values']),
                       axis='columns')
Traceback (most recent call last):

  Cell In[29], line 1
missing_value_count.agg(lambda s: pd.Series([*s.nlargest().index, *s.nsmallest().index],

  File D:\Users\Mahmoud\anaconda3\Lib\site-packages\pandas\core\frame.py:9196 in aggregate
result = op.agg()

  File D:\Users\Mahmoud\anaconda3\Lib\site-packages\pandas\core\apply.py:699 in agg
result = self.obj.apply(self.orig_f, axis, args=self.args, **self.kwargs)

  File D:\Users\Mahmoud\anaconda3\Lib\site-packages\pandas\core\frame.py:9423 in apply
return op.apply().__finalize__(self, method="apply")

  File D:\Users\Mahmoud\anaconda3\Lib\site-packages\pandas\core\apply.py:678 in apply
return self.apply_standard()

  File D:\Users\Mahmoud\anaconda3\Lib\site-packages\pandas\core\apply.py:798 in apply_standard
results, res_index = self.apply_series_generator()

  File D:\Users\Mahmoud\anaconda3\Lib\site-packages\pandas\core\apply.py:814 in apply_series_generator
results[i] = self.f(v)

  Cell In[29], line 1 in <lambda>
missing_value_count.agg(lambda s: pd.Series([*s.nlargest().index, *s.nsmallest().index],

  File D:\Users\Mahmoud\anaconda3\Lib\site-packages\pandas\core\series.py:500 in __init__
com.require_length_match(data, index)

  File D:\Users\Mahmoud\anaconda3\Lib\site-packages\pandas\core\common.py:576 in require_length_match
raise ValueError(

ValueError: Length of values (2) does not match length of index (1)

需求

需要返回count值最高且missing_values最小的行,对应样本数据的结果应为:

missing_values      count
0                   51

解决方法

你的错误根源在于agg配合axis='columns'时,是对每一行执行lambda,但你试图返回长度为2的Series,和原行的索引长度(1)不匹配,完全不符合需求逻辑。

要实现需求,不需要用agg,直接按以下步骤处理:

  1. 先按count列降序排序,确保count最高的行排在前面
  2. 再按missing_values列升序排序,确保在count相同的情况下,取missing_values最小的行
  3. 取排序后的第一行即可

修正后的代码如下:

# Get the count of each missing value
missing_value_count = missing_values.iloc[:, 0:1].value_counts().to_frame()
missing_value_count.sort_index(inplace=True)

missing_value_count.to_csv('question.csv')

# 修正部分:获取count最高且missing_values最小的行
result = missing_value_count.sort_values(by=['count', 'missing_values'], ascending=[False, True]).head(1)
print(result)

如果你的missing_value_count的索引就是missing_values(因为用了value_counts()后索引是原列的值),那代码可以简化为:

result = missing_value_count.sort_values(by='count', ascending=False).sort_index().head(1)

两种方式都能得到你需要的结果:

missing_values  count
0               51

内容的提问来源于stack exchange,提问作者mahmoud988

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 03:07:08