Удалить столбцы на основе среднего количества элементов в строке - PullRequest
0 голосов
/ 05 октября 2019

Немного странный вопрос. Для примера образца данных:

    df = 

   1    1.1     2   2.1     3   3.1     4   4.1     5   5.1

  11     22    33    44    55    66    77    88    99    12
  12     13    14    15   Nan   Nan   Nan   NaN   NaN   NaN
  11     22    33    44    55    66    77   NaN   NaN   NaN

Я хочу удалить столбцы, содержащие значения NaN. Но иногда мои NaN начинаются с 3-го столбца, поэтому я не хочу их отбрасывать. Я хочу сделать некоторое приближение или иметь в виду. Я хочу проверить среднюю длину строк до NaN и отбросить остальные.

Пример:

  • 1-й ряд имеет 10 баллов
  • 2-й ряд имеет 4 балла
  • 3-й ряд имеет 6 баллов

Таким образом, среднее значение будет равно 7. Итак, мои данные будут:

    df = 

   1    1.1     2   2.1     3   3.1     4   

  11     22    33    44    55    66    77   
  12     13    14    15   Nan   Nan   Nan   
  11     22    33    44    55    66    77   

Возможно, вы можете предложить другой метод подготовки данных

1 Ответ

2 голосов
/ 05 октября 2019

Если NaN всегда будут последними в строках (например, у вас не будет первого столбца в качестве NaN, второго столбца в качестве значения, затем NaN и т. Д.), Вы можете сделать что-то вроде:

df.iloc[:, :int(df.count(axis=1).mean())]

Что даст вам:

    0   1   2   3     4     5     6
0  11  22  33  44  55.0  66.0  77.0
1  12  13  14  15   NaN   NaN   NaN
2  11  22  33  44  55.0  66.0  77.0
...