Как объединить два столбца в другой отдельный столбец в Pandas? - PullRequest
0 голосов
/ 08 ноября 2018

Любая помощь будет принята с благодарностью. Это, вероятно, легко, но я новичок в Python.
Я хочу добавить два столбца «Широта» и «Долгота» и поместить его в столбец «Местоположение».

Например:

Первая строка в Локаторе будет иметь значение 41.864073, а первая строка в Локаторе будет иметь значение -87.706819.

Я бы хотел, чтобы в столбце 'Locations' отображался 41.864073, -87.706819.

пожалуйста и спасибо.

Ответы [ 4 ]

0 голосов
/ 08 ноября 2018

Я определенно кое-что узнал от W-B и Timgeb. Моя идея состояла в том, чтобы просто преобразовать в строки и объединить. Я отправил свой ответ на случай, если вы захотите получить результат в виде строки. В противном случае, похоже, что ответы выше - путь.

import pandas as pd
from pandas import *  

Dic = {'Lattitude': [41.864073], 'Longitude': [-87.706819]}
DF = pd.DataFrame.from_dict(Dic)
DF['Location'] = DF['Lattitude'].astype(str) + ',' +  DF['Longitude'].astype(str)
0 голосов
/ 08 ноября 2018

Настройка

df = pd.DataFrame(dict(lat=range(10, 20), lon=range(100, 110)))

zip

Это должно быть лучше, чем использовать apply

df.assign(location=[*zip(df.lat, df.lon)])

   lat  lon   location
0   10  100  (10, 100)
1   11  101  (11, 101)
2   12  102  (12, 102)
3   13  103  (13, 103)
4   14  104  (14, 104)
5   15  105  (15, 105)
6   16  106  (16, 106)
7   17  107  (17, 107)
8   18  108  (18, 108)
9   19  109  (19, 109)

list вариант

Хотя я бы все же предложил tuple

df.assign(location=df[['lat', 'lon']].values.tolist())

   lat  lon   location
0   10  100  [10, 100]
1   11  101  [11, 101]
2   12  102  [12, 102]
3   13  103  [13, 103]
4   14  104  [14, 104]
5   15  105  [15, 105]
6   16  106  [16, 106]
7   17  107  [17, 107]
8   18  108  [18, 108]
9   19  109  [19, 109]
0 голосов
/ 08 ноября 2018

Данные из Пир

df['New']=tuple(zip(*df[['lat','lon']].values.T))
df
Out[106]: 
   lat  lon        New
0   10  100  (10, 100)
1   11  101  (11, 101)
2   12  102  (12, 102)
3   13  103  (13, 103)
4   14  104  (14, 104)
5   15  105  (15, 105)
6   16  106  (16, 106)
7   17  107  (17, 107)
8   18  108  (18, 108)
9   19  109  (19, 109)
0 голосов
/ 08 ноября 2018

Я подвергаю сомнению полезность этого столбца, но вы можете сгенерировать его, применив к столбцам tuple.

>>> df = pd.DataFrame([[1, 2], [3,4]], columns=['lon', 'lat'])
>>> df
>>> 
   lon  lat
0    1    2
1    3    4
>>> 
>>> df['Location'] = df.apply(tuple, axis=1)
>>> df
>>> 
   lon  lat Location
0    1    2   (1, 2)
1    3    4   (3, 4)

Если в вашем фрейме данных есть другие столбцы, кроме 'lon' и 'lat', используйте

df['Location'] = df[['lon', 'lat']].apply(tuple, axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...