#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, и принятый ответ намного, намного лучше.