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