从两个数据框列中创建一对值的列表

4
这应该很容易,但我就是搞不定。我有一个包含lon和lat列的数据框,我想创建一个列表,其中包含成对的lon和lat值。
数据框如下所示:
    amenity                               name        lat        lon
0   school        George Bath Elementary School  40.722452 -75.386650
1   school        Dana L Lyon Elementary School  42.337774 -77.317131
2   school                  Bath Village School  44.168952 -71.963701
3   school                          Bath School  35.476832 -76.811605
4   school                          Hyde School  43.905080 -69.822825

我需要一个类似这样的列表:
[(40.722452, -75.386650), (42.337774, -77.317131), (44.168952, -71.963701)...]

3
这个问题的答案是否对你有帮助?如何在Pandas中从两列创建元组列 - talatccan
谢谢,是的,我只是不知道我在找什么! - Kim_Turtle
4个回答

9

试试这个:

list(zip(df['lat'],df['lon']))

1

运行:

df[['lat', 'lon']].apply(tuple, axis=1).tolist()

步骤:

  • df[['lat', 'lon']] - 选择两个感兴趣的列,
  • apply(tuple, axis=1) - 对每一行应用tuple函数(目前结果为一个Series),
  • tolist() - 将此Series转换为“普通”列表。

1
你可以这样做:

 import pandas as  pd

 #Reading your data
 #data -> Pandas dataframe
 data = pd.read_excel('yourFile.xlsx')

 # Gets the column info
 lat = data['lat']
 lon = data['lon']

 #Process it
 result = []
 for i in range(len(lat)):
     #Adding to result based on indexes
     result.append((lat[i], lon[i]))

 print result

我尝试以易于理解的方式编写它(:


0

尝试:

df.apply(lambda row: pd.Series([(row['lat'], row['lon'])]), axis=1)[0].tolist()

结果:

[(40.722452000000004, -75.38665),
 (42.337773999999996, -77.317131),
 (44.168952000000004, -71.963701),
 (35.476832, -76.811605),
 (43.90508, -69.822825)]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接