Почему неправильно присоединяются данные в датасет?

Есть датасет, содержащий accessLog, один из столбцов в нем это ip. По нему нужно создать новый датасет, для этого использую библиотеку geoip.geolite2. Данные извлекаются правильно, а запиь в новый датасет выполняется неправильно.

                  0 continent country   ip subdivisions timezone
0      54.36.149.41       NaN     NaN  NaN          NaN      NaN
1                US       NaN     NaN  NaN          NaN      NaN
2                NA       NaN     NaN  NaN          NaN      NaN
3              (NJ)       NaN     NaN  NaN          NaN      NaN
4  America/New_York       NaN     NaN  NaN          NaN      NaN

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

import pandas as pd
from geoip import geolite2

col_names = ['ip', 'country', 'continent', 'subdivisions', 'timezone']
my_df = pd.DataFrame(columns=col_names)

print(my_df)

df = pd.read_csv('parse_accessLog.csv', sep=';')
ip_list = df['%h'].tolist()
print(ip_list)

for i in ip_list:

    apend_list = []

    try:
        m = geolite2.lookup(i)
        contry = m.country
    except:
        contry = "can't find country"

    try:
        m = geolite2.lookup(i)
        continent = m.continent
    except:
        continent = "can't find continent"

    try:
        m = geolite2.lookup(i)
        subdivisions = m.subdivisions
    except:
        subdivisions = "can't find subdivisions"

    try:
        m = geolite2.lookup(i)
        timezone = m.timezone
    except:
        timezone = "can't find timezone"

    apend_list = [i, contry, continent, subdivisions, timezone]
    my_df = my_df.append(apend_list, ignore_index=True)
    print(apend_list)


my_df.to_csv('DictForLearn.csv', sep=';')

Где в когда я ошибся?


Ответы (1 шт):

Автор решения: SergFSM

попробуйте перед append добавить строчку:

apend_list = pd.Series(apend_list, index=col_names)
→ Ссылка