Ввод значений списка в столбцах панд - PullRequest
0 голосов
/ 24 сентября 2019

Учитывая список следующим образом:

l = [['43.195', '-22.17', '-43.17', '-22.198', '-43.198', '22.197'], ['43.196', '-22.14', '-43.179', '-22.188', '-43.188', '22.192']]

Мне нужно добавить значения из этого списка в два отдельных столбца кадра данных.Пример: значения, где индексы подсписка l равны (l [0] [0], l [0] [2], l [1] [0], etc.), идут в столбец LATITUDE;и значения, что индексы подсписков l нечетны (l [0] [1], l [0] [3], l [1] [1], etc.), идут в столбец LONGITUDE.Фрейм данных уже существует, а столбцы LATITUDE и LONGITUDE - нет.

Я безуспешно пытаюсь выполнить следующее:

d = pd.DataFrame()
i = 0
j = 0
if i < len(l):
   if j < len(l[i]) and j%2==0:
      d['LATITUDE'] = ', '.join(map(str, l[i][j]))
      j += 1
   elif j < len(l[i]) and j%2!=0:
      d['LONGITUDE'] = ', '.join(map(str, l[i][j]))
      j+=1
   i += 1
d

Примечание. Каждый подсписок соответствует одному экземпляруДатафрейм.

Ожидаемый результат:

         LATITUDE             |     LONGITUDE
'-43.195', '-43.17', -43.198  | '-22.17', '-22.198', '-22.197'
'-43.196', '-43.179', -43.192 | '-22.14', '-22.188', '-22.192'

Ответы [ 3 ]

1 голос
/ 24 сентября 2019

Это будет использовать reshape

pd.concat([pd.Series([x[::2],x[1::2]]).str.join(sep=',') for x in l],1).T
Out[280]: 
                        0                      1
0   43.195,-43.17,-43.198  -22.17,-22.198,22.197
1  43.196,-43.179,-43.188  -22.14,-22.188,22.192
1 голос
/ 24 сентября 2019

IIUC, вы хотите выводить в формате строки.Вы можете использовать ноль шагов и map и join для создания строки значений

a = np.array(l)
pd.DataFrame({'LATITUDE': map(', '.join, a[...,::2]), 'LONGTITUDE': map(', '.join, a[...,1::2])})

Out[416]:
                   LATITUDE               LONGTITUDE
0   43.195, -43.17, -43.198  -22.17, -22.198, 22.197
1  43.196, -43.179, -43.188  -22.14, -22.188, 22.192
0 голосов
/ 24 сентября 2019

Вы можете сделать это с помощью функции цепочки itertools, как показано ниже

from itertools import chain
import pandas as pd
l = [['43.195', '-22.17', '-43.17', '-22.198', '-43.198', '22.197'], ['43.196', '-22.14', '-43.179', '-22.188', '-43.188', '22.192']]

chained = list(chain(*l))
pd.DataFrame(dict(LATITUDE=chained[::2], LONGITUDE=chained[1::2]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...