【问题标题】:using a wildcard when merging two dataframes in python在 python 中合并两个数据帧时使用通配符
【发布时间】:2017-04-07 16:41:18
【问题描述】:

我有以下代码从剪贴板中获取请求的部件列表,request,并与召回部件的数据框 db 合并,从而生成数据框 res 与请求的零件清单相关的召回。

我想更改此代码,以便能够将两个数据帧与添加到请求的部分列表中的通配符合并(例如:03.5 将合并到 03.501db 中的 03.524 等)。

我尝试使用request['PARTS'] = request['PARTS'].str.upper() + "*" 添加星号,但没有成功。 感谢您的宝贵时间。

import pandas as pd

#load recalled parts database
db = pd.read_csv(r'resources/recall_part_db.csv', sep=';',converters={'PARTS':str})
db['PARTS'] = db['PARTS'].str.upper()

#import search request from clipboard (excel)
request = pd.read_clipboard(names=['PARTS'], sep='\r\n',converters={'PARTS':str})
request['PARTS'] = request['PARTS'].str.upper()

res = pd.merge(db,request, on=['PARTS','PARTS'])

【问题讨论】:

    标签: python string pandas dataframe merge


    【解决方案1】:

    request['PARTS'] = request['PARTS'].str.upper() + "*" 应该可以实际工作。

    试试这个方法:

    request['PARTS'] = request['PARTS'].apply(lambda s: s.upper() + "*")
    

    【讨论】:

    • 我试过了,它确实添加了*,但它没有正确合并:例如:530.5* 没有与召回的部件数据框 db 中的 530.521 和 530.522 合并
    • 您能否详细解释一下这个合并部分是什么以及如何执行它?还不清楚
    • 我编辑了问题中的代码以删除与问题无关的行。我正在尝试将(pandas.merge)零件的数据框内部连接到召回零件的数据框。但我想在请求数据帧的每一行末尾与通配符合并。
    猜你喜欢
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 2017-12-17
    • 2011-01-14
    • 1970-01-01
    相关资源
    最近更新 更多