나는 기본적으로 팬더 시리즈를 취한 후 처리 후 국가를 반환하는 find_country_from_connection_ip
기능을 가지고 있습니다.왜 DataFrame.apply()에서는 AttributeError가 발생하지만 개별 함수 호출에서는 AttributeError가 발생하지 않습니까?
내가하려는 것은 위의 함수의 반환 값으로 DataFrame에 새 열을 형성하는 것입니다.
dataframe_without_connection_ips['Country'] =
dataframe_without_connection_ips.apply(lambda x:find_country_from_connection_ip(x['Connection IP']), axis=1)
하지만, 내가 점점 오전 오류는 다음과 같습니다 : 나의 시도는
는AttributeError: ("'str' object has no attribute 'iloc'", u'occurred at index 303449')
그래서, 나의 이해는 오류 그래서 index
303449.에서 생성 될 수있다라고, 나는 함수를 호출하려고 그 특정한 색인에.
test_ip = dataframe_without_connection_ips[dataframe_without_connection_ips.index== 303449]['Connection IP']
find_country_from_connection_ip(test_ip)
그리고, 놀랍게도 내가 오류없이 예상 출력 'United Kingdom'
을 얻고있다.
여기 무슨 일입니까?
알 겠지만,'ip.iloc [0]'은'else' 절에 있습니다. 인수'ip'가 문자열이 아니므로'result'는'False'로 평가됩니다. 그래서, 나는 이미 else 절에서 Series를 가져야한다는 경우를 처리했습니다. 내가 잘못? –
''result''가 문자열 (예 : 외부 프로그램에서 조회를 일으키는 예기치 않은 IP 주소)이더라도 "False"로 평가되는 경우가 있습니까? –