【问题标题】:merging dataset based values of another data set [closed]合并另一个数据集的基于数据集的值
【发布时间】:2021-08-07 00:52:36
【问题描述】:

我有 2 个数据框,第一个数据是这样的:

Name Company Model Year KmDriven Variant Engine FuelType Safety AgentResponsible
car1 Honda HondaCity 2006 10000 V V6 Diesel 4
car2 Huandai Santro 2008 20000 XL V10 Petrol 3
car3 Tata Altroz 2019 5000 X V6 Diesel 5
car4 Ford Figo 2018 10000 M V6 Petrol 4
car5 Tata Nexon 2020 5000 XL V10 Diesel 4

第二个数据集是:

Company Engine FuelType Safety AgentResponsible
Honda V6 Diesel 3 Vinod
Honda V10 Diesel 3 Vinod
Honda V6 Diesel 4 Akash
Honda V6 Diesel 5 Akash
Tata V6 Diesel 4 Amit
Tata V10 Petrol 5 Akash
Tata V10 Diesel 4 Amit
Huandai V10 Petrol 3 Silva
Huandai V10 Diesel 4 Silva
Huandai V10 Diesel 5 Silva
Ford V10 Diesel 4 Silva
Ford V6 Petrol 4 Amit

基于第二个数据集,我想在第一个数据集中填写 Agent Responsible。两个数据集的行和列维度不同。

实际D1为1900x20,D2为395x5。

数据集 2 有 4 列的大约 320 种组合来提供名称,但同一个人可以表示超过 1 种组合,如本例所示。

【问题讨论】:

    标签: excel pandas dataframe


    【解决方案1】:

    试一试:

    df1 = (
        df1.merge(
            df2,
            left_on=['Company', 'Engine', 'FuelType', 'Safety'],
            right_on=['Company', 'Engine', 'FuelType', 'Safety'],
            how='left')
        .drop('AgentResponsible_x', 1)
        .rename(columns={'AgentResponsible_y': 'AgentResponsible'})
    )
    

    【讨论】:

    • 由于 df1 和 df2 基于索引并不相似,我很确定所有 300 种组合都将在 df1 的 1900 行中重复,所以这段代码会提高 Nan 值还是会继续检查整个 df1 的循环并填充所有值。例如 car50 与 car 1 类似,名称 Akash 应分配,但 df2 已用完索引。
    • 它奏效了,让我意识到我需要再次回到概念上。谢谢!
    猜你喜欢
    • 2023-03-15
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    相关资源
    最近更新 更多