не может заменить [''] на площадку метода в DataFrame - PullRequest
0 голосов
/ 30 июня 2018

работает python2.7

Question1

Я хочу заменить пустую строку '' на None в моем тестовом фрейме данных:

    from numpy.random import randn
    test = pd.DataFrame(randn(3,2))
    test.iloc[0,0]=''
    test.replace('', None)

Дайте мне ошибку TypeError:

не может заменить [''] на панель методов в DataFrame.

Что пошло не так?

Вопрос 2:

из numpy.random import randn

test = pd.DataFrame(randn(3,2))
# this works
test.iloc[0,1]= 'A'
test[1] = test[1].replace('A','b')
# this does not
test.iloc[0,0]=''
test.loc[0] = test[0].replace('', None)


test 
          0         1
0                   b
1  0.042052  -1.44156
2  0.462131 -0.303288

Я ожидаю

test 
          0         1
0    None           b
1  0.042052  -1.44156
2  0.462131 -0.303288

Ответы [ 2 ]

0 голосов
/ 30 июня 2018

Просто используйте not-a-number. В любом случае Панды конвертируют ваш None в не число *. Во-вторых, не забудьте присвоить свой результат новой переменной или установить вместо параметра inplace значение True. test.replace('', np.NaN) ничего не делает самостоятельно.

import pandas as pd
import numpy as np
from numpy.random import randn
test = pd.DataFrame(randn(3,2))
test.iloc[0,0]=''
test = test.replace('', np.NaN)

* Pandas работает лучше всего и наиболее эффективно, когда все данные имеют одинаковый тип данных. Это numpy.float64 в вашем случае. np.NaN также является поплавком. Если вы хотите иметь None в вашем фрейме данных, все должно быть сохранено как object тип данных, который менее эффективен. np.NaN это, вероятно, то, что вам нужно.

0 голосов
/ 30 июня 2018

Ничто не интерпретируется как отсутствие аргумента. Попробуйте:

test.replace({'':None})

Вопрос 2:

test.where(test != '', None)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...