【发布时间】:2018-10-22 10:01:32
【问题描述】:
假设我有 2 个数据框,它们共享列“shoe”、“size”和“color”。较小的数据框包含每个鞋子型号并有一列“price”。较大的数据框包含每只售出的鞋子,但不包含价格(我知道这没有意义,但我只是想解释我的问题)
我想找到一种方法在较大的数据框中为鞋的价格编译一个新列,这将从较小的数据框中获取 3 个共享列“鞋”、“尺寸”和“颜色”。
我尝试过由于大小不同而不起作用的合并,我尝试过使用 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 中创建一个“价格”列,通过将 df2 的列与 df1 中相应列中的匹配值进行匹配来找到该列
【问题讨论】:
-
你能创建一些示例数据吗?
-
最好有一个具体的例子,在这种情况下是输入数据帧和预期的输出,而不是只用文字描述你想要的。
-
相信你需要
df = df1.merge(df2, how='left') -
@jezrael 年,我觉得很像
-
我刚刚在原始帖子中添加了代码来帮助编译可用于帮助解决我的问题的数据帧。如果您有任何其他问题,请告诉我,我可以帮助您澄清
标签: python python-3.x pandas dataframe