计算一行中出现次数最多的值 pandas 并用该出现次数最多的值创建一列
Count the most frequent values in a row pandas and make a column with that most frequent value
我有一个如下所示的数据框:
a b c
0 3 3 3
1 3 3 3
2 3 3 3
3 3 3 3
4 2 3 2
5 3 3 3
6 1 2 1
7 2 3 2
8 0 0 0
9 0 1 0
我想计算每一行的频率并添加一个包含最大频率的列结果,如下所示:
a b c result
0 3 3 3 3
1 3 3 3 3
2 3 3 3 3
3 3 3 3 3
4 2 3 2 2
5 3 3 3 3
6 1 2 1 1
7 2 3 2 2
8 0 0 0 0
9 0 1 0 0
我尝试对转置后的列进行转置和循环以获得 value_counts 但无法获得正确的结果。
非常感谢任何帮助。
使用DataFrame.mode
with select first column by positions with DataFrame.iloc
:
df['result'] = df.mode(axis=1).iloc[:, 0]
print (df)
a b c result
0 3 3 3 3
1 3 3 3 3
2 3 3 3 3
3 3 3 3 3
4 2 3 2 2
5 3 3 3 3
6 1 2 1 1
7 2 3 2 2
8 0 0 0 0
9 0 1 0 0
我有一个如下所示的数据框:
a b c 0 3 3 3 1 3 3 3 2 3 3 3 3 3 3 3 4 2 3 2 5 3 3 3 6 1 2 1 7 2 3 2 8 0 0 0 9 0 1 0
我想计算每一行的频率并添加一个包含最大频率的列结果,如下所示:
a b c result 0 3 3 3 3 1 3 3 3 3 2 3 3 3 3 3 3 3 3 3 4 2 3 2 2 5 3 3 3 3 6 1 2 1 1 7 2 3 2 2 8 0 0 0 0 9 0 1 0 0
我尝试对转置后的列进行转置和循环以获得 value_counts 但无法获得正确的结果。 非常感谢任何帮助。
使用DataFrame.mode
with select first column by positions with DataFrame.iloc
:
df['result'] = df.mode(axis=1).iloc[:, 0]
print (df)
a b c result
0 3 3 3 3
1 3 3 3 3
2 3 3 3 3
3 3 3 3 3
4 2 3 2 2
5 3 3 3 3
6 1 2 1 1
7 2 3 2 2
8 0 0 0 0
9 0 1 0 0