Python和Pandas:按多个列应用

Python和Pandas:按多个列应用,pandas,multiple-columns,apply,Pandas,Multiple Columns,Apply,我是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.

我是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经度列,然后

-第二次,第二个数据帧纬度列与第二个数据帧经度列

如何在每列和每次迭代时调用

.apply (lambda column: geohash.encode(column[0],column[1],precision=8), axis=1)
我想要得到的是一个新的数据帧,它有二十列,每列都是geohash函数的结果


您可以通过创建一个包含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)

您有两个DataFame,每个都有一个
纬度
长度
列?@Alex P您的需求令人困惑。如果你提到你的虚拟输入和预期输出,回答起来会很容易。我正在考虑这个问题。我的代码是不可复制的。你有什么建议,我可以采取大数据帧,使他们在一个代码,可以创建这样的数据帧?我有两个数据帧。一个只有纬度和二十根柱子。另一个只有经度和二十根柱子。二十列只是不同的时间快照。我可以编辑你的代码为我的,它的工作完全符合我的需要。谢谢。真正地很遗憾,我不能胜过你。很高兴我能帮上忙!既然你问了这个问题,你可以点击向上/向下投票箭头下方的星号来接受我的答案。是的!我不知道!