Ряд панд к датафрейму в питоне - PullRequest
0 голосов
/ 05 июля 2018

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

0 {"провинция": "Париж", "city": "Paris", "countryCode": "FR", "floor": null, "country": "France", "route": "RUE MONGE", "extra": null, "координаты": [2.35242, 48.84477], "streetNumber": "55", "locationType": null, "postalCode": "75005"} 1 {"провинция": ноль, "город": "Париж", "countryCode": "FR", "floor": "CPO_BELI_floor_1482430978123", "country": "France", "route": "PLACE DU PANTHEON", "extra": null, "координаты": [2.345032, 48.845715], "streetNumber": "17", "locationType": "OUTDOOR", "postalCode": "75005"} 2 {"провинция": ноль, "город": "Париж", "код страны": "FR", "этаж": "CPO_BELI_floor_1482430978123", "страна": "Франция", "маршрут": "RUE DU BAC "," extra ": null," координаты ": [2.327753, 48.857124], "streetNumber": "35", "locationType": "OUTDOOR", "postalCode": "75007"}

Я запускаю этот код, чтобы преобразовать его в фрейм данных, но id не разбивает ряд на соответствующие столбцы:

pd.DataFrame(data['fields.geolocation'], index=data.index)

Спасибо заранее за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Попробуйте использовать pd.concat с axis=1 ( ссылка ) вместо:

Это ваша серия:

A = {"province": "Paris", "city": "Paris", "countryCode": "FR", "floor": None, "country": "France", "route": "RUE MONGE", "extra": None, "coordinates": [2.35242, 48.84477], "streetNumber": "55", "locationType": None, "postalCode": "75005"}
B = {"province": None, "city": "Paris", "countryCode": "FR", "floor": "CPO_BELI_floor_1482430978123", "country": "France", "route": "PLACE DU PANTHEON", "extra": None, "coordinates": [2.345032, 48.845715], "streetNumber": "17", "locationType": "OUTDOOR", "postalCode": "75005"}
C = {"province": None, "city": "Paris", "countryCode": "FR", "floor": "CPO_BELI_floor_1482430978123", "country": "France", "route": "RUE DU BAC", "extra": None, "coordinates": [2.327753, 48.857124], "streetNumber": "35", "locationType": "OUTDOOR", "postalCode": "75007"}

A_series = pd.Series(A)
B_series = pd.Series(B)
C_series = pd.Series(C)

И таким образом вы можете создать желаемый фрейм данных

df = pd.concat([A_series, B_series, C_series], axis=1)
type(df)
pandas.core.frame.DataFrame

Надеюсь, это поможет.

0 голосов
/ 05 июля 2018

Вы близки, нужно преобразовать каждую строку в list s:

df = pd.DataFrame(data['fields.geolocation'].values.tolist(), index=data.index)

Sample

a = [{"province": "Paris", "city": "Paris", "countryCode": "FR", "floor": 'null', "country": "France", "route": "RUE MONGE", "extra": 'null', "coordinates": [2.35242, 48.84477], "streetNumber": "55", "locationType": 'null', "postalCode": "75005"} ,
 {"province": 'null', "city": "Paris", "countryCode": "FR", "floor": "CPO_BELI_floor_1482430978123", "country": "France", "route": "PLACE DU PANTHEON", "extra": 'null', "coordinates": [2.345032, 48.845715], "streetNumber": "17", "locationType": "OUTDOOR", "postalCode": "75005"} ,
 {"province": 'null', "city": "Paris", "countryCode": "FR", "floor": "CPO_BELI_floor_1482430978123", "country": "France", "route": "RUE DU BAC", "extra": 'null', "coordinates": [2.327753, 48.857124], "streetNumber": "35", "locationType": "OUTDOOR", "postalCode": "75007"}]

s = pd.Series(a, index=[2,3,5])
print (s)
2    {'province': 'Paris', 'city': 'Paris', 'countr...
3    {'province': 'null', 'city': 'Paris', 'country...
5    {'province': 'null', 'city': 'Paris', 'country...
dtype: object

df = pd.DataFrame(s.values.tolist(), index=s.index)
print (df)

    city            coordinates country countryCode extra  \
2  Paris    [2.35242, 48.84477]  France          FR  null   
3  Paris  [2.345032, 48.845715]  France          FR  null   
5  Paris  [2.327753, 48.857124]  France          FR  null   

                          floor locationType postalCode province  \
2                          null         null      75005    Paris   
3  CPO_BELI_floor_1482430978123      OUTDOOR      75005     null   
5  CPO_BELI_floor_1482430978123      OUTDOOR      75007     null   

               route streetNumber  
2          RUE MONGE           55  
3  PLACE DU PANTHEON           17  
5         RUE DU BAC           35  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...