python - 循环遍历 pandas Dataframe 以从另一个 Dataframe 获取值

标签 python pandas for-loop dataframe

我有两个 Pandas 数据框。第一个数据框包含不同圆圈随时间的位置。示例:df1 =

               x      y      time
circle
 1.0          235    133     1.0
 2.0          236    133     1.0
 3.0          245    425     1.0
 4.0          215    325     2.0
 5.0          287    203     4.0
 6.0          394    394     5.0

第二个数据框的组织方式与第一个完全相同,但包含不同时间的正方形位置。示例:df2 =

               x      y      time
square
 1.0          243    233     1.0
 1.0          293    436     2.0
 2.0          189    230     3.0
 2.0          189    233     4.0
 3.0          176    203     4.0
 3.0          374    394     5.0

我想弄清楚如何遍历数据帧 df1 以在每个时间点访问 df2 中所有当前的方 block ,找出最接近的方 block 。

示例输出:

               x      y      time      closest_sq      sq_x      sq_y
circle
 1.0          235    133     1.0          1.0           243       233
 2.0          236    133     1.0          1.0           243       233
 3.0          245    425     1.0          1.0           243       233
 4.0          215    325     2.0          1.0           243       233
 5.0          287    203     4.0          2.0           189       233    
 6.0          394    394     5.0          3.0           374       394 

我猜我必须在 for 循环中使用 iterrows() 或 itertuples() 才能得到这个,但我不确定,而 scipy cdist 可以得到距离。

最佳答案

您可以使用pd.merge() 加入数据框,然后使用df.loc。以下是如何使用数据框执行此操作:

df3 = pd.merge(df1,df2,on='time',how='inner')
df4 = df3.loc[df3['time'] == 1.0]
df4[['circle','square','time']].head()

您可以使用inplace=True 优化上述代码。

关于python - 循环遍历 pandas Dataframe 以从另一个 Dataframe 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49279387/

相关文章:

Java:我的 split 方法有问题

javascript - Jquery Ajax 调用未在 for 循环中执行

c - 跳出 'for' 循环

python - 如何在 Keras、Tensorflow 中导入 LSTM

python - Django:如何通过 ModelForm 更新个人资料图片?

python - 如何在Python中将十六进制代码行(\x)获取到十六进制地址(0x)?

python - 想要使用实际位置和字母位置的总和为 python 中的数据框中的列创建分数

python - Pandas 为列创建自定义 groupby 聚合

python - 如果数据框中的元素比下面的元素大或小 15%,则将其替换为 0

Python 文件计数不匹配