首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于条件的数据组合

基于条件的数据组合
EN

Stack Overflow用户
提问于 2021-12-09 11:37:02
回答 1查看 47关注 0票数 1

我正在尝试合并来自两个不同大小的数据文件的信息。在下面的代码中,可以看到来自dataframe的捷径。

代码语言:javascript
复制
import pandas as pd
df1 = pd.DataFrame({'ID': [0,1,2,3,4,5,6], 
               'distance': [55.1, 55.2, 55.3, 55.4, 55.6, 55.7, 55.8 ],
               'spec_location': ['','','','','','','',]})

df2 = pd.DataFrame({'ID': [0,1,2], 
               'start_distance': [55, 55.4, 55.8],
               'end_distance': [55.4,55.8,56],
               'location': ['PKS', 'DDS', 'LMS']})

Dataframe 1是一个更详细的dataframe,我需要根据条件将信息从dataframe 2传输到dataframe 1。条件声明,如果距离(从df1)是之间的起点和终点距离(从df2)。df2中指定的位置应该在df1中的spec_location中填充。然后,这将产生一个如下所示的数据格式:

代码语言:javascript
复制
   ID  distance spec_location
0   0      55.1           PKS
1   1      55.2           PKS
2   2      55.3           PKS
3   3      55.4           PKS
4   4      55.6           DDS
5   5      55.7           DDS
6   6      55.8           DDS

我尝试过各种循环和合并技术,但我似乎无法让它发挥作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-09 12:44:45

编写一个映射函数并应用它:

代码语言:javascript
复制
def location(x):
    for _, row in df2.iterrows():
        if row['start_distance'] < x <= row['end_distance']:
            return row['location']

df1['spec_location'] = df1['distance'].apply(location)

输出:

代码语言:javascript
复制
   ID  distance spec_location
0   0      55.1           PKS
1   1      55.2           PKS
2   2      55.3           PKS
3   3      55.4           PKS
4   4      55.6           DDS
5   5      55.7           DDS
6   6      55.8           DDS
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70289225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档