Замена пустых значений (пробел) на NaN в пандах

Я хочу найти все значения в кадре данных Pandas, которые содержат пробелы (любое произвольное количество) и заменить эти значения на NaN.

Есть идеи, как это можно улучшить?

В основном я хочу включить это:

                   A    B    C
2000-01-01 -0.532681  foo    0
2000-01-02  1.490752  bar    1
2000-01-03 -1.387326  foo    2
2000-01-04  0.814772  baz     
2000-01-05 -0.222552         4
2000-01-06 -1.176781  qux     

В это: я

                   A     B     C
2000-01-01 -0.532681   foo     0
2000-01-02  1.490752   bar     1
2000-01-03 -1.387326   foo     2
2000-01-04  0.814772   baz   NaN
2000-01-05 -0.222552   NaN     4
2000-01-06 -1.176781   qux   NaN

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

for i in df.columns:
    df[i][df[i].apply(lambda i: True if re.search('^\s*

Это можно было бы немного оптимизировать, просматривая только поля, которые могут содержать пустые строки:

if df[i].dtype == np.dtype('object')

Но это'не так много улучшений

И, наконец, этот код устанавливает целевые строки в None, что работает с Pandas ' функции какfillna(), но было бы неплохо для полноты, если бы я мог вставитьNaN прямо вместо.None

, str(i)) else False)]=None

Это можно было бы немного оптимизировать, просматривая только поля, которые могут содержать пустые строки:

if df[i].dtype == np.dtype('object')

Но это'не так много улучшений

И, наконец, этот код устанавливает целевые строки в None, что работает с Pandas ' функции какfillna(), но было бы неплохо для полноты, если бы я мог вставитьNaN прямо вместо.None

Ответы на вопрос(10)

Ваш ответ на вопрос