数据帧中所有列的计数模式出现次数

2024-06-28 20:00:27 发布

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

我有一个如下所示的数据框

dataframe1=

In  AA   BB  CC
0   10   1   0
1   11   2   3
2   10   6   0
3   9    1   0
4   10   3   1
5   1    2   0

现在我想创建一个数据帧,它为每列提供模式计数,对于AA列,模式10的计数为3,对于CC列,模式0的计数为4,但是对于BB,有两种模式1和2,因此对于BB,我需要模式的计数总和。因此对于BB,计数是2+2=4,对于模式1和2

因此,我想要的最终数据帧如下所示

Columns  Counts
AA        3
BB        4
CC        4

怎么做


Tags: columns数据in模式aacc计数bb
3条回答

您可以将列与mode进行比较,并按sum对匹配项进行计数:

df = pd.DataFrame({'Columns': df.columns,
                   'Val':[df[x].isin(df[x].mode()).sum() for x in df]})
print (df)
  Columns  Val
0      AA    3
1      BB    4
2      CC    4

另一个使用列表理解的可扩展性稍高的解决方案:

pd.concat([df.eq(x) for _, x in df.mode().iterrows()]).sum()

[外]

AA    3
BB    4
CC    4
dtype: int64

首先,我们得到带有^{}的列的模式

然后,我们将每个列与其模式进行比较,并使用^{}检查模式的数量和sum

modes = df.iloc[:, 1:].mode()
data = {col: df[col].isin(modes[col]).sum() for col in df.iloc[:, 1:].columns}
df = pd.DataFrame.from_dict(data, orient='index', columns=['Counts'])

    Counts
AA       3
BB       4
CC       4

相关问题 更多 >