У меня есть данные, которые я отсортировал, ниже приведен образец данных:
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 vount 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)
Я хочу вернуть наименьшее значение в отсутствующих_значениях с максимальными значениями в счетчике. Таким образом, в приведенных выше данных результат будет
missing_values count
0 51
Как я могу исправить эту часть моего кода, чтобы она возвращала наименьшее значение в отсутствующих_значениях со счетчиком hight=est?
missing_value_count.agg(lambda s: pd.Series([*s.nlargest().index, *s.nsmallest().index],
['missing_values']),
axis='columns')
Я бы хотел 1/51. Мне нужно наибольшее количество с наименьшим значением пропущенного_значения.
df.sort_values(['count', 'missing_values'], ascending=[False, True]).iloc[:1]?
@mozway это тоже правильный ответ.
Я считаю, что принятый ответ неполный (неверно, если у вас более одной строки с 51)






Один из способов сделать это:
df.agg({"missing_values": min, "count":max}).to_frame().T
Нет, это не то. Как вы можете видеть, мне нужны недостающие_значения, и они считаются не отдельными парами. В выводе выше Missing_values 0 и счетчик 51.
Так?
result = missing_value_count[missing_value_count['count'] == missing_value_count['count'].max()]
где Missing_value_count — это фрейм данных с двумя предоставленными вами столбцами.
Ваш пример неоднозначен, вы хотите отдать приоритет минимальному «отсутствующим_значениям» или максимальному «количеству»? Пожалуйста, продемонстрируйте, что произойдет, если у вас есть одна строка с 0/20 и одна с 1/51.