Python 获取大小()或groupby&;计数以跨所有列工作

Python 获取大小()或groupby&;计数以跨所有列工作,python,pandas,Python,Pandas,抱歉,如果这看起来是重复的,我已经找到了很多使用groupby和size的接近答案,但是没有一个返回列标题作为索引 我有以下df(实际上有340列和许多行): 我正在尝试为每列计算“0”、“1”和“N/A”的实例。所以我希望索引是列名,列是“0”、“1”和“N/A” 我试过这个,但我担心它效率很低或不正确,因为它无法完成 def countx(x, colname): df_thresholds=df_third.groupby(colname).count() for col in

抱歉,如果这看起来是重复的,我已经找到了很多使用groupby和size的接近答案,但是没有一个返回列标题作为索引

我有以下df(实际上有340列和许多行):

我正在尝试为每列计算“0”、“1”和“N/A”的实例。所以我希望索引是列名,列是“0”、“1”和“N/A”

我试过这个,但我担心它效率很低或不正确,因为它无法完成

def countx(x, colname):
    df_thresholds=df_third.groupby(colname).count()

for col in df_thresholds.columns:    
    df_thresholds[col + '_Count'] = df_third.apply(countx, axis=1, args=(col,))
我可以为一个专栏写这篇文章,但那会很痛苦:

df_thresholds=df_third.groupby('Name_Clean_100_100_Correct').count()
df_thresholds=df_thresholds[['Name_Raw']]
df_thresholds=df_thresholds.T

如果我理解正确,这应该是可行的:

df_third.apply(pd.Series.value_counts)
结果:

     Name_Clean_40_40_Correct  ...  Name_Clean_40_60_Correct
0                         3.0  ...                         1
1                         1.0  ...                         1
N/A                       NaN  ...                         2
顺便说一句:要仅选择包含“Correct”的列,请执行以下操作:

df_third.filter(like='Correct')
转置形式
df_third.T

                            0    1  N/A
Name_Clean_40_40_Correct  3.0  1.0  NaN
Name_Clean_40_80_Correct  1.0  2.0  1.0
Name_Clean_40_60_Correct  1.0  1.0  2.0

嗯。。。是否
df\u第三个。应用(pd.value\u计数)。T
do it?…然后需要将其转置。。。所以[…]我希望索引是列名,列是“0”、“1”和“N/A”。是的,很好。谢谢我差一点就拿到了,但是没有那部连续剧。转置是的。谢谢附带问题是否有一种简单的方法可以只保留名称中有“正确”的列?请使用带有
like
选项的筛选器。更新答案。非常感谢。
                            0    1  N/A
Name_Clean_40_40_Correct  3.0  1.0  NaN
Name_Clean_40_80_Correct  1.0  2.0  1.0
Name_Clean_40_60_Correct  1.0  1.0  2.0