【发布时间】:2020-10-27 15:00:47
【问题描述】:
我有一个数据框,比如说:
Name Visits 0 Z 0 1 A 0 2 B 1 3 C 1 4 D 0 5 E 0
现在,我列出了访问次数为 0 的名字,所以它有 Z、A、D 和 E。现在,我从这 4 个名字中随机选择 2 个。然后,我想增加这些的访问次数2 人 1。我如何仅引用这 2 个名称,访问他们的相应访问并更改它? [在 python 中,熊猫] 谢谢!
【问题讨论】:
我有一个数据框,比如说:
Name Visits 0 Z 0 1 A 0 2 B 1 3 C 1 4 D 0 5 E 0
现在,我列出了访问次数为 0 的名字,所以它有 Z、A、D 和 E。现在,我从这 4 个名字中随机选择 2 个。然后,我想增加这些的访问次数2 人 1。我如何仅引用这 2 个名称,访问他们的相应访问并更改它? [在 python 中,熊猫] 谢谢!
【问题讨论】:
这是一个可行的解决方案:
df.visit[df.visit == 0] += 1
【讨论】:
如果你已经有谁访问过 0 次的列表,你可以使用 pd.Series.isin 为布尔索引创建一个布尔掩码,然后将相应的值增加 1
vals = ['Z', 'A', 'D', 'E']
m = df['Name'].isin(vals)
df.loc[m, 'Visits']+=1
# This only increases Z, A, D, E visits by 1
【讨论】:
从号码尝试random.choice,然后通过index赋值
df.loc[np.random.choice(df.index[df.Visits==0],2),'Visits'] += 1
df
Out[95]:
Name Visits
0 Z 1
1 A 0
2 B 1
3 C 1
4 D 0
5 E 0
【讨论】: