在Pandas中,如何将两列连接到另一个单独的列中



如有任何帮助,我们将不胜感激。这可能很简单,但我是Python的新手
我想添加两列,即纬度和经度,并将其放入一个名为位置的列中。

例如:

纬度中的第一行将具有值41.864073,经度中的第一行将具有值-87.706819

我希望'Locations'列显示41.864073, -87.706819

请,谢谢。

设置

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]

我质疑这个列的有用性,但您可以通过在列上应用可调用的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)

Pir 的数据

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)

我确实从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)

最新更新