如何计算Pandas每一行出现次数最多的数字?

2024-05-29 02:09:56 发布

您现在位置:Python中文网/ 问答频道 /正文

df = pd.DataFrame([[1,2,3,1,5],
                   [2,3,4,4,6],
                   [7,2,2,2,5],
                   [21,3,4,3,6]], index=[1,2,3,4], columns=list('ABCDE'))

df的结果值

^{pr2}$

我怎么知道哪一个数字在每一行出现最多?在

例如:

row 1: 1    appears two times
row 2: 4    appears two times
row 3: 2    appears three times

等等。。。。在


Tags: columnsdataframedfindex数字listrowpd
2条回答
for idx, i in df.iterrows():
    l = list(i)
    list_of_counts = [l.count(x) for x in l]
    m = max(list_of_counts)
    print ("row " + str(idx) + ":" + str(l[list_of_counts.index(m)]) +" appears " + str(m) +" times")

1:1出现2次

第2:4行出现2次

第3:2行出现3次

第4:3行出现2次

您可以使用^{}^{}来获取出现的值和计数,然后^{}将它们连接起来:

value = df.apply(lambda x: x.value_counts().index[0], axis=1)
count = df.apply(lambda x: x.value_counts().iloc[0], axis=1)

out = pd.concat([value, count], axis=1).reset_index()

out.columns = ['row_num', 'val', 'appearing']
out['row_num'] = 'row ' + out['row_num'].astype(str) + ':'
out['appearing'] = 'appears ' + out['appearing'].astype(str) + ' times'

In [64]: out
Out[64]:
  row_num  val        appearing
0  row 1:    1  appears 2 times
1  row 2:    4  appears 2 times
2  row 3:    2  appears 3 times
3  row 4:    3  appears 2 times

相关问题 更多 >

    热门问题