我有一个像下面这样的pandas Dataframe:
UserId ProductId Quantity
1 1 6
1 4 1
1 7 3
2 4 2
3 2 7
3 1 2
现在,我想使用df.sample(n)随机选择此DataFrame的20%行,并将这些行的Quantity列的值更改为零。我还想保留更改行的索引。因此生成的DataFrame将是:
UserId ProductId Quantity
1 1 6
1 4 1
1 7 3
2 4 0
3 2 7
3 1 0
我想在列表中保留第3行和第5行的更改。我怎样才能做到这一点?
答案 0 :(得分:4)
使用update
dfupdate=df.sample(2)
dfupdate.Quantity=0
df.update(dfupdate)
update_list = dfupdate.index.tolist() # from cᴏʟᴅsᴘᴇᴇᴅ :)
df
Out[44]:
UserId ProductId Quantity
0 1.0 1.0 6.0
1 1.0 4.0 0.0
2 1.0 7.0 3.0
3 2.0 4.0 0.0
4 3.0 2.0 7.0
5 3.0 1.0 2.0
答案 1 :(得分:2)
使用loc
更改数据,
change = df.sample(2).index
df.loc[change,'Quantity'] = 0
输出:
UserId ProductId Quantity 0 1 1 0 1 1 4 1 2 1 7 3 3 2 4 0 4 3 2 7 5 3 1 2
change.tolist() : [3, 0]