基于另一个数据帧d生成列数据

2024-04-20 15:53:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧df1,它有:

F_ID I_Code     F_Date
1   FT-54185    01/09/2019
2   FT-35447    01/09/2019
3   FT-39312    01/09/2019
4   FT-21146    01/09/2019
5   FT-40664    01/09/2019
1   FT-56984    02/09/2019
2   FT-19680    02/09/2019
3   FT-89801    02/09/2019
4   FT-29238    02/09/2019
5   FT-45919    02/09/2019
1   FT-97960    03/09/2019
2   FT-76736    03/09/2019
3   FT-73886    03/09/2019
4   FT-70293    03/09/2019
5   FT-72250    03/09/2019

我有另一个数据帧df2,它有以下条目:

F_Date    ID_code
01/09/2019  5
01/09/2019  5
01/09/2019  5
01/09/2019  5
01/09/2019  2
01/09/2019  2
01/09/2019  2
01/09/2019  2

我想生成一个新的列“ID”,它将从df1中提取并插入到df2中

预期产出:

F_Date    ID_code  ID
01/09/2019  5      FT-40664
01/09/2019  5      FT-40664
01/09/2019  5      FT-40664
01/09/2019  5      FT-40664
01/09/2019  2      FT-35447
01/09/2019  2      FT-35447
01/09/2019  2      FT-35447
01/09/2019  2      FT-35447

如果ID_代码中没有值('NA'或0),则需要在列中填写'NA'

我试图通过以下方式实现同样的目标:

d = df1.groupby('F_Date')['I_Code'].apply(list).to_dict()

df2['new'] = df2.apply(lambda x: d.get(x['F_Date'], [])[x['ID_Code']], axis=1)

我得到以下错误:

TypeError: ('list indices must be integers or slices, not float', 'occurred at index 0')

有谁能告诉我我做错了什么,或者有没有其他方法来达到同样的目的


Tags: 数据代码id目标date方式code条目
1条回答
网友
1楼 · 发布于 2024-04-20 15:53:13

尝试:

df2.merge(df1, left_on = ['ID_code','F_Date'], right_on = ['F_ID','F_Date'], how = 'left').rename(columns={"I_Code": "ID"}).fillna('NA').drop('F_ID', axis = 1)

相关问题 更多 >