矢量化 Pandas - 使用另一列将列分配给数组值

Vectorising Pandas - Assigning Column to Array Value using another Column

我有一个 Pandas 数据框,其中包含一些与位置数据匹配的值。我想使用我的一个列中的值从二维数组中获取位置数据,使用列数据作为数组索引。

import pandas as pd
df1 = pd.DataFrame({'ExistingColumn': [0,2,3,1,2,3,0,0,2,3]})
df1['NewColumn'] = array[df1['ExistingColumn']][1]
TypeError: list indices must be integers or slices, not Series

有没有办法不用手动遍历行就可以做到这一点?

FYI 数组如下所示:

[['2_-34.0,140.95.kml', -34.0, -36.425, 143.575, 140.95], 
['2_-34.0,143.575.kml', -34.0, -36.425, 146.2, 143.575], 
['2_-36.425,140.95.kml', -36.425, -38.849999999999994, 143.575, 140.95], 
['2_-36.425,143.575.kml', -36.425, -38.849999999999994, 146.2, 143.575]]

我需要根据 'ExistingColumn'.

的值将纬度坐标 return 到 Dataframe 中的列

我正在寻找的输出: df1 = pd.DataFrame({'ExistingColumn': [0,2,3,1,2],'NewColumn':[-34,-36.425,-36.425,-34,-36.425]})

如果 2d 数组是 arr 且长度与列相同,则使用索引:

arr = np.array([['2_-34.0,140.95.kml', -34.0, -36.425, 143.575, 140.95], 
['2_-34.0,143.575.kml', -34.0, -36.425, 146.2, 143.575], 
['2_-36.425,140.95.kml', -36.425, -38.849999999999994, 143.575, 140.95], 
['2_-36.425,143.575.kml', -36.425, -38.849999999999994, 146.2, 143.575]])


df1 = pd.DataFrame({'ExistingColumn': [0,2,3,1,2,3,0,0,2,3]})

df1['NewColumn'] = arr[df1['ExistingColumn'], 1]
print (df1)
   ExistingColumn NewColumn
0               0     -34.0
1               2   -36.425
2               3   -36.425
3               1     -34.0
4               2   -36.425
5               3   -36.425
6               0     -34.0
7               0     -34.0
8               2   -36.425
9               3   -36.425