基于df1中的3个值与df2中的3个值匹配,在数据帧中填充新列

2024-05-15 15:09:25 发布

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

假设我有两个数据帧,都共享列“shoe”、“size”和“color”。较小的数据框包含每个鞋款,并有一列“price”。更大的数据框包含所有售出的鞋子,但不包含价格(我知道这不合理,但我只是想解释我的问题)

我想找到一种方法,在较大的数据框中为鞋类价格编译一个新的列,它将从较小的数据框中为3个共享列“shoe”、“size”和“color”中的每一个匹配获取鞋类价格。你知道吗

我尝试过由于大小不同而不起作用的合并,我尝试过使用for循环,但老实说,我还是个初学者。你知道吗

有人能给我指出正确的方向吗?你知道吗

下面是一些用随机数据生成数据帧的代码:

def Rand(start, end, num): 
res = [] 

for j in range(num): 
    res.append(random.randint(start, end)) 

return res


df1 = pd.DataFrame({"shoe":range(10), 
"size":range(1,11),"color":range(2,12),
'price':range(100,110)})

df2 = pd.DataFrame({"shoe": Rand(1, 10, 100),
"size": Rand(1, 11, 100), "color": Rand(1, 11, 100)})

给定上述数据帧,我试图在df2中创建一个“price”列,它通过将df2的列与df1中相应列中的匹配值进行匹配来找到


Tags: 数据forsizerangeres价格startprice
1条回答
网友
1楼 · 发布于 2024-05-15 15:09:25

也许你需要这个:

import pandas as pd
file1 = pd.DataFrame({"shoe":range(10), "size":range(1,11),"color":range(2,12), 'price':range(100,110)})
file2 = pd.DataFrame({"shoe":range(100), "size":range(1,101),"color":range(2,102)})
df = pd.merge(file1,file2,how='right', on = ["shoe","size","color"])
df.head()

在本例中,您将得到新的dataframe,它合并匹配的三列。 你可以在这里阅读更多https://pandas.pydata.org/pandas-docs/stable/merging.html

相关问题 更多 >