如何将一个列表与另一个数据帧(Pandas)比较并返回值?

2024-05-10 06:27:43 发布

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

df1=pd.DataFrame({'Product_ID':["55165","80125,30215","55557","92361","32619,28965,20147","88722","82793","70809, 20201","11367"],
          'Product': ["ABC",'FDA','FSD','JGH','TYE','BVC','LKJ','HJD','POI'],
         'Country':['CN','US','GB','AG','MX','CA','DE','CA','SG']})

df2=pd.DataFrame({'Deal_ID':[70809,88722,82793,20201,55165,30215,11367]})

上面提供了df和列表(deal\u id)enter image description here

我想把国家信息和产品id添加到df2中。 我尝试使用join函数,但是df1的产品ID不是数字。有什么解决办法吗

事先谢谢你的帮助


Tags: iddataframe产品productcapddf1df2
1条回答
网友
1楼 · 发布于 2024-05-10 06:27:43

你可以在几分钟内完成steps:- 你知道吗

1.展平聚合的数据帧

适当地连锁和重复序列,记住从str转换到int

from itertools import chain
import numpy as np

split = df1['Product_ID'].str.split(',')
lens = split.map(len)

df1 = pd.DataFrame({'Country': np.repeat(df1['Country'], lens),
                    'Product': np.repeat(df1['Product'], lens),
                    'Deal_ID': list(map(int, chain.from_iterable(split)))})

2.与包含选定交易ID的数据帧合并

df2 = df2.merge(df1)

print(df2)

   Deal_ID Country Product
0    70809      CA     HJD
1    88722      CA     BVC
2    82793      DE     LKJ
3    20201      CA     HJD
4    55165      CN     ABC
5    30215      US     FDA
6    11367      SG     POI

相关问题 更多 >