Заменить пустую строку в списке на NaN - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь заменить пустую строку в списке известной строкой (скажем, «NAN»). Я использую следующую команду

a = ['','','asdf']    
["nan" if x =='' else x for x in a]

Код работает, когда он используется автономно, однако, когда я пытаюсь использовать его в своем основном коде, он не работает. Мой основной код выглядит следующим образом:

data = [ ('plant_data.xlsx', 0, []),('sorg.xlsx', 1, ['','','asdf'])]#,('sloc.xlsx', 1, ['307-040N'])];


for fl in data:
    filename = fl[0];
    filename = filename[:-5];

    f = open('IC1_Results\%s.txt' %filename,'w');

    if fl[1] == 0:
        f.write("All Part Numbers exist");
        f.close()

    elif fl[1] == 1:
        a = fl[2];
        print type(a)

        ["nan" if x == '' else x for x in a]

        print fl[2],a

Ответы [ 4 ]

0 голосов
/ 30 июля 2019

Вот еще одна опция, которая использует метод isinstance(). Использование basestring работает как для простых строк, так и для строк Unicode.

[np.nan if isinstance(x, basestring) else x for x in a]
0 голосов
/ 26 июня 2018

Вывод списка понимания - это новый список - вам нужно переопределить существующий список (или создать новый для хранения результатов)

a = ["nan" if x == '' else x for x in a]

Я полагаю, что причина, по которой вы работали в автономном скрипте, заключается в том, что когда вы выполняете представление списка как есть, python выводит список на экран, но если вы хотите использовать этот новый список, вы ' Вам нужно сохранить его в переменной.

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

Вы создаете этот ["nan" if x == '' else x for x in a] список, но не назначаете его! Ваш код должен быть похож на a= ["nan" if x == '' else x for x in a].

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

Это работает, но вы просто запускаете его, не назначая вывод никакой локации. Измените строку на:

fl[2] = ["nan" if x == '' else x for x in a]

Или, может быть:

a = ["nan" if x == '' else x for x in a]

В зависимости от того, где вы хотите хранить его ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...