【发布时间】:2019-01-22 19:52:07
【问题描述】:
我有两个数据框
df1# - 这有用户ID和相应用户购买的产品。
Userid, Productid, Ordered_Qty
user1 1 1
user1 2 1
user1 3 1
user2 4 1
user2 5 1
user2 3 1
user3 2 1
user3 4 1
user3 5 1
df2# - 这里有产品主文件
Productid, some_attribute
1 "xsff"
2 "xsff"
3 "xsff"
4 "xsff"
5 "xsff"
现在,我想创建如下所示的新数据框,
Row - Userid from df1
columns - Productid from df2
新数据框# - [i,j] 值对应于 df1# Ordered_Qty(any qty)。基本上我想获得 df2 中的所有值 - Productid 但在新数据框中填充值 来自df1。如果 df1 没有 userid(row) & product(col) 组合的条目,那么我喜欢在其中保留零
1 2 3 4 5
user1 1 1 1 0 0
user2 0 0 1 1 1
user3 0 1 0 1 1
为此,我所做的是
new_dataframe = pd.dataframe(0,index=df1.Userid.unique(),columns=df2.Productid.unique())
for index,row in df1.iterrows():
userid = row['Userid']
productid = row['Productid']
ord_qty = row['Ordered_Qty']
new_dataframe.loc[userid][productid] = ord_qty
但是这种方式会花费更多时间并最终导致内存错误。 有没有更好的办法?
【问题讨论】:
标签: python-3.x pandas