我是python的新手,我成功地在数据框中使用Apply在数据框中创建了新列。
X['Geohash']=X[['Lat','Long']].apply (lambda column: geohash.encode(column[0],column[1],precision=8), axis=1)
这将调用geohash函数,其中每行每列的纬度和经度。
现在我有两个新的数据帧,一个用于纬度,一个用于经度。 每个数据框都有二十列,我希望
.apply (lambda column: geohash.encode(column[0],column[1],precision=8), axis=1)
被称为二十次。
-第一次第一次 dataframe-Latitude列,然后是第一个dataframe-Longitude列
-第二次,第二个dataframe-Latitude列和第二个dataframe-Longitude列。
我如何按列进行每次迭代,并在每次迭代时调用
.apply (lambda column: geohash.encode(column[0],column[1],precision=8), axis=1)
我想要得到的是一个新的数据框,其中包含二十列,每一列都是geohash函数的结果。
想法将不胜感激。
答案 0 :(得分:1)
您可以通过创建一个具有20列的“空”数据框,然后使用df.columns [i]遍历其他数据框来实现此目的-像这样:
output = pd.DataFrame({i:[] for i in range(20)})
这将创建一个空的数据框,其中包含所有需要的列(编号)。
现在,假设经度和纬度数据帧分别称为“ lon”和“ lat”。我们需要将它们加入一个数据框,然后:
lonlat = lat.join(lon)
for i in range(len(output.columns)):
output[output.columns[i]] = lonlat.apply(lambda column: geohash.encode(column[lat.columns[i]],
column[lon.columns[i]],
precision=8), axis=1)