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

#python #pandas

#python #pandas

Вопрос:

у меня есть простой фрейм данных pandas с двумя столбцами. я хотел бы сгенерировать вложенный список из этих двух столбцов.

 geo = pd.DataFrame({'lat': [40.672304, 40.777169, 40.712196], 
                'lon': [-73.935385, -73.988911, -73.957649]})
  

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

 X = [[i] for i in geo['lat'].tolist()]
Y = [i for i in geo['lon'].tolist()]

for key, value in enumerate(X):
    X[key].append(Y[key])
  

однако я чувствую, что должен быть способ получше этого.

Спасибо!

Комментарии:

1. Вам нужно geo.values.tolist() ?

2. @MaxU эксперт достойный

3. @piRSquared Я согласен

Ответ №1:

pandas построен поверх numpy . A DataFrame хранит его values в numpy массиве, у которого есть tolist метод.

 >>> geo = pd.DataFrame({'lat': [40.672304, 40.777169, 40.712196],
    ...:                 'lon': [-73.935385, -73.988911, -73.957649]})
    ...:
>>> geo.values
>>>
array([[ 40.672304, -73.935385],
       [ 40.777169, -73.988911],
       [ 40.712196, -73.957649]])
>>>
>>> geo.values.tolist()
[[40.672304, -73.935385], [40.777169, -73.988911], [40.712196, -73.957649]]
  

Ответ №2:

Как насчет

 out_list = []
for index, row in geo.iterrows():
    out_list.append([row.lat, row.long])
  

Комментарии:

1. Спасибо! это более лаконично! Хотя @MaxU был еще более кратким.

2. Примечание : .iterrows() заведомо медленный, используйте его только в случае крайней необходимости.

3. Согласен — с тех пор я узнал намного больше о pandas, и принятый ответ намного, намного лучше.