Извлечение данных из фрейма данных со словарями в элементах столбца - PullRequest
1 голос
/ 21 апреля 2020

Я попытался извлечь столбец в список, а затем получить значения, но не получилось. Мне нужно также сохранить NaN. Столбец имеет структуру -

df['geocoded_column']
0       {'type': 'Point', 'coordinates': [-117.009178,...
1                                                     NaN
2                                                     NaN
3       {'type': 'Point', 'coordinates': [-104.612123,...
4       {'type': 'Point', 'coordinates': [-86.043072, ...
                              ...                        
2726    {'type': 'Point', 'coordinates': [-87.879139, ...
2727    {'type': 'Point', 'coordinates': [-95.266593, ...
2728    {'type': 'Point', 'coordinates': [-92.317039, ...
2729    {'type': 'Point', 'coordinates': [-83.017686, ...
2730    {'type': 'Point', 'coordinates': [-91.528653, ...

df['geocoded_column'][0] - 
{'type': 'Point', 'coordinates': [-117.009178, 32.779435]}



I need to segregate it into the type - 
Latitude                        Longitude
-117.117.009178                32.779435
NaN                             NaN

Ответы [ 2 ]

2 голосов
/ 21 апреля 2020

Проверьте это, значения Nan контролируются:

lat = []
lon = []
for x in df['geocoded_column']:
    if isinstance(x,dict):
        lat.append(x['coordinates'][0])
        lon.append(x['coordinates'][1])
    else:
        lat.append(np.nan)
        lon.append(np.nan)

df['latitude']=lat
df['longitude']=lon

Выход:

                                     geocoded_column    latitude  longitude
0  {'type': 'Point', 'coordinates': [-117.009178,... -117.009178      -33.0
1                                                NaN         NaN        NaN
2                                                NaN         NaN        NaN
3  {'type': 'Point', 'coordinates': [-104.612123,... -104.612123      123.0
4  {'type': 'Point', 'coordinates': [-86.043072, ...  -86.043072       24.0
2 голосов
/ 21 апреля 2020

Это должно работать для тебя

df['Latitude'] = [point['coordinates'][0] for point in df['geocoded_column']]
df['Longitude'] = [point['coordinates'][1] for point in df['geocoded_column']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...