使用的问题x.mode()[0]
就是它pd.Series(['A', 'B', 'C']).mode()
评估为['A', 'B', 'C']
。同时,pd.Series(['A', 'A', 'B']).mode()
评估为['A']
.
这是一个函数,它将返回众数(如果只有一个众数),如果存在平局(即多个众数),则返回“x”。
import pandas as pd
lst = [["High", "A"], ["High", "A"], ["High", "B"],["Medium", "A"], ["Medium", "B"], ["Medium", "C"]]
df = pd.DataFrame(lst, columns=["Class", "Grade"])
def get_mode_or_x(series):
mode = series.mode()
if mode.size == 1:
return mode[0]
return "x"
df.loc[:, "majority_vote"] = df.groupby("Class")["Grade"].transform(get_mode_or_x)
index |
Class |
Grade |
majority_vote |
0 |
High |
A |
A |
1 |
High |
A |
A |
2 |
High |
B |
A |
3 |
Medium |
A |
x |
4 |
Medium |
B |
x |
5 |
Medium |
C |
x |