我有一个包含多行和多列的dataframe。我只有一个性别。它被介于0- 2之间的值所占据。我还有另一个值。名为“忽略”,值为true或false。
我只想选择50%的性别比例。值为2,而这些值应该更改相应的忽略col。对真有价值。
现在我有了.loc
函数来查找值为2的所有性别,然后他们将忽略值更改为True。但是,我如何才能改进.loc
功能,使其只改变#2性别值的50%,而不是所有的#2?
我应该用一个.group_by
或其他东西来分割df吗?
df.loc[(df['gender'] == 2), 'ignore'] = True
发布于 2022-09-29 11:02:06
一种选择是:
import pandas as pd
import numpy as np
N = 100
d = pd.DataFrame({'gender': np.random.choice(range(3), N),
'ignore': np.random.choice([True, False], N)})
d.query('gender == 2').sample(frac = 0.5).assign(ignore = True)
https://stackoverflow.com/questions/73894358
复制相似问题