如有任何帮助,我们将不胜感激。这可能很简单,但我是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)