假设我有一个这样的样本 Dataframe ,瓦尔是一个二进制值(在这个例子中介于1和2之间),我想消除val中的异常值,将它们更改为与多数值相同。
df = pandas.DataFrame({'name':['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C'], 'val':[1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2]})
name val
0 A 1
1 A 2
2 A 2
3 A 2
4 B 2
5 B 1
6 B 1
7 B 1
8 C 1
9 C 1
10 C 2
11 C 2
我希望将索引0和4处的值更正(此处分别更正为2和1),因为每组中只有一个事件,但C不变。
我想我可以写一个transform语句,但不知道如何去做。
2条答案
按热度按时间kzmpq1sx1#
正如您所写的,您只有两个可能的值,您可以比较每个值的计数:
输出:
vngu2lb82#
如果您想保留出现次数最多的值,可以使用mode查找这些值,然后检查
mode
的count
是否等于1。如果不等于1,则意味着有两个或更多值以相同频率出现。输出: