首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫在dataframe中按条目替换id号

问熊猫在dataframe中按条目替换id号
EN

Stack Overflow用户
提问于 2020-03-28 13:54:10
回答 2查看 85关注 0票数 1

我有两种不同的数据。一个看起来像这样

代码语言:javascript
复制
arriv depart stop_id
12:35 12:40  a2b
23:00 01:00  a1e

其他的看起来是这样的:

代码语言:javascript
复制
stop_id  lon   lat   name
a1e      12.1  13.2  Old Church
a2b      12.2  13.1  Postal Service

现在,我想用数据子集创建一个如下所示的dataframe:

代码语言:javascript
复制
arriv depart stop_id  lon   lat   name
12:35 12:40  a2b      12.2  13.1  Postal Service
23:00 01:00  a1e      12.1  13.2  Old Church

基本合并这两个数据格式,但在停止列表中包含大量的双条目。做这件事的好方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-28 14:41:17

您可以在主熊猫名称空间中使用pandas.DataFrame.merge()函数来组合公共列stop_id上的这些数据:

代码语言:javascript
复制
import pandas as pd

df1 = pd.DataFrame(
    {'arriv': ['12:35', '23:00'],
     'depart': ['12:40', '01:00'],
     'stop_id': ['a2b', 'a1e']}
)

df2 = pd.DataFrame(
    {'stop_id': ['a2b', 'a1e'],
     'lon': ['12.1', '12.2'],
     'lat': ['12.2', '13.1'],
     'name': ['Old Church', 'Postal Service']}
)
print (pd.merge(df1, df2, on='stop_id'))

在您的示例中,不需要将how参数定义为默认的inner。但有时您可以使用left、right或outer (类似于SQL full outer join)选项,例如

代码语言:javascript
复制
pd.merge(df1, df2, how='outer', on='stop_id')
票数 2
EN

Stack Overflow用户

发布于 2020-03-28 14:39:31

我相信您想要的是:“对于第一个dataframe中的每个实例,合并lon lat和name列(在另一个dataframe中可用)。”

如果是这样的话,可以使用pd.merge():

代码语言:javascript
复制
import pandas as pd
timeDF = pd.DataFrame({
          "arriv":["12:35","23:00","13:35","12:35"],
          "depart":["12:40","01:00","14:25","14:35"],
          "stop_id":["a2b","a1e","a2b","a1e"]
          })
stopDF = pd.DataFrame({
          "long":["12.1","13.1"],
          "lat":["13.0","14.3"],
          "name":["nameA","nameB"],
          "stop_id":["a2b","a1e"]
          })
print(pd.merge(timeDF,stopDF,how='left',on='stop_id'))

投入:

代码语言:javascript
复制
arrive_departure_dataframe:
    arriv depart stop_id
0  12:35  12:40     a2b
1  23:00  01:00     a1e
2  13:35  14:25     a2b
3  12:35  14:35     a1e

stops_information_dataframe:
    long   lat   name stop_id
0  12.1  13.0  nameA     a2b
1  13.1  14.3  nameB     a1e

产出:

代码语言:javascript
复制
   arriv depart stop_id  long   lat   name
0  12:35  12:40     a2b  12.1  13.0  nameA
1  23:00  01:00     a1e  13.1  14.3  nameB
2  13:35  14:25     a2b  12.1  13.0  nameA
3  12:35  14:35     a1e  13.1  14.3  nameB
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60902033

复制
相关文章

相似问题

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