gpt4 book ai didi

python - 仅当一列满足特定条件时如何合并数据帧

转载 作者:行者123 更新时间:2023-12-03 20:22:52 25 4
gpt4 key购买 nike

假设我有一个数据框“df_main”:

ID   Type
1 Car
1 Truck
2 Truck
另一个数据框“truck_data”:
Truck_ID         Data
1 TruckData1
2 TruckData2
合并这两个给出数据框:
   ID   Type  Truck_ID        Data
0 1 Car 1 TruckData1
1 1 Truck 1 TruckData1
2 2 Truck 2 TruckData2
当且仅当 Type == 'Truck' 时,如何修改合并语句以仅合并来自 Truck_data 的与 ID 匹配的行?
期望的输出:
   ID   Type  Truck_ID        Data
0 1 Car 1
1 1 Truck 1 TruckData1
2 2 Truck 2 TruckData2
当前代码:
df_main = pd.DataFrame(columns=['ID', 'Type'], data=[[1, 'Car'], [1, 'Truck'], [2, 'Truck']])
truck_df = pd.DataFrame(columns=['Truck_ID', 'Data'], data=[[1, 'TruckData1'], [2, 'TruckData2']])
df_main = df_main.merge(truck_df, left_on='ID', right_on='Truck_ID', how='left')

最佳答案

Filter the required rows来自 df1/perform merge/concat未过滤的行。

m = df_main.Type.eq('Truck')
merged_df = pd.concat([df_main.loc[~m], df_main.loc[m].merge(truck_df, left_on='ID', right_on='Truck_ID')]
输出:
   ID   Type        Data
0 1 Car NaN
0 1 Truck TruckData1
1 2 Truck TruckData2

关于python - 仅当一列满足特定条件时如何合并数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67729010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com