我有一个pd.DataFrame
,其中包含不同的dtypes列。我想要每种类型的列数。我使用的是熊猫0.24.2。
我尝试过:
dataframe.dtypes.value_counts()
它在其他dtypes (float64, object, int64)
上也可以正常工作,但是出于一个奇怪的原因,它没有汇总“类别”功能,因此我为每个类别获得了不同的计数(好像它们将被计为dtypes)。
我也尝试过:
dataframe.dtypes.groupby(by=dataframe.dtypes).agg(['count'])
但这会引起
TypeError:数据类型无法理解。
可复制示例:
import pandas as pd
df = pd.DataFrame([['A','a',1,10], ['B','b',2,20], ['C','c',3,30]], columns = ['col_1','col_2','col_3','col_4'])
df['col_1'] = df['col_1'].astype('category')
df['col_2'] = df['col_2'].astype('category')
print(df.dtypes.value_counts())
预期结果:
int64 2
category 2
dtype: int64
实际结果:
int64 2
category 1
category 1
dtype: int64
答案 0 :(得分:4)
print (df.get_dtype_counts())
category 2
int64 2
dtype: int64
但是如果使用最新版本的熊猫,则建议您采用以下解决方案:
从0.25.0版开始不推荐使用。
改为使用.dtypes.value_counts()。
答案 1 :(得分:3)
@jezrael提到它已在0.25.0中弃用,dtypes.value_counts(0)
会给两个category
实体,所以要解决这个问题:
print(df.dtypes.astype(str).value_counts())
输出:
int64 2
category 2
dtype: int64