Преобразование почтовых индексов в состояния в python

Я пытаюсь преобразовать все почтовые индексы в столбце «zip_code» в состояния, используя пакет zipcode 2.0.0.

zip=f['zip_code']
zip=zip.astype(int)
zip=zip.astype(str)
for i in zip:
    myzip = zipcode.isequal(i)
    print(myzip.state)

Я преобразовал почтовые индексы в строку, потому что myzip принимает только строки. Однако, когда я пытаюсь распечатать соответствующие состояния, выдает ошибку:

AttributeError: 'NoneType' object has no attribute 'state'

В чем проблема? Пакет здесь


person datalearner    schedule 03.10.2017    source источник
comment
zip — зарезервированное ключевое слово в Python; пожалуйста, используйте что-нибудь другое.   -  person Reblochon Masque    schedule 03.10.2017
comment
@ReblochonMasque, технически zip - это не ключевое слово, а встроенная функция. Все еще зарезервированное имя, которое OP следует избегать для своих переменных.   -  person randomir    schedule 03.10.2017
comment
@brddawg Я имею в виду, возможно. Мы не знаем, что такое f['zip_code'], а astype может быть расширением str для работы с набором объектов, похожих на почтовый индекс.   -  person Adam Smith    schedule 03.10.2017
comment
@datalearner поможет ваш метод ввода и примеры данных.   -  person brddawg    schedule 03.10.2017
comment
@Adam Smith только что обнаружил несколько проблем с этим stackoverflow.com/questions/22231592/ - либо zip.astype(basestring), либо zip.apply(str) должны работать, как показано в ответе.   -  person brddawg    schedule 03.10.2017
comment
@brddawg, почему вы думаете, что f - это массив панд?   -  person Adam Smith    schedule 03.10.2017
comment
Хорошая мысль @AdamSmith - приводит к поиску этого метода для возвращаемых таким образом панд и нимф, причем панды являются наиболее распространенными. хороший тег, чтобы добавить.   -  person brddawg    schedule 03.10.2017
comment
zip не зарезервировано, что означает, что его нельзя использовать повторно. Он просто предопределен, что означает, что его не следует использовать повторно, не понимая последствий. class — это пример зарезервированного ключевого слова, поэтому в качестве обычного первого аргумента метода класса используется что-то вроде cls.   -  person chepner    schedule 03.10.2017
comment
Что такое f? См. Как спросить и предоставьте минимальный воспроизводимый пример в будущем.   -  person juanpa.arrivillaga    schedule 03.10.2017


Ответы (1)


Согласно здесь: http://pythonhosted.org/zipcode/, метод isequal может возвращать объект Zip. или None, если почтовые индексы не равны. Поэтому вы должны печатать состояние только в том случае, если вы вернете действительный почтовый индекс. Попробуй это:

zip=f['zip_code']
zip=zip.astype(int)
zip=zip.astype(str)
for i in zip:
    myzip = zipcode.isequal(i)
    if myzip:
        print(myzip.state)
person Stuart Buckingham    schedule 03.10.2017
comment
Это было быстро! Спасибо, вы решили проблему :) Думаю, мне предстоит пройти долгий путь, когда дело доходит до поиска ответов, прежде чем задавать вопрос. - person datalearner; 03.10.2017
comment
Не волнуйтесь! Отметьте зеленую галочку рядом с ответом, если он вам помог. - person Stuart Buckingham; 03.10.2017