繁体   English   中英

获取 Dataframe 中每一列的文本、数字/浮点、空白和 Nan 值的计数,并使用过滤器提取

[英]Get the count of Text, Numeric/Float, Blank and Nan values for each column in a Dataframe and extract using a filter

假设下表

指数 列1 列2 列3
0 10.5 2.5
1个
2个 2.9 3.2 一种
3个 #VAL 2个
4个 3个 5.6 4个

现在我想要得到的是一个摘要 dataframe 它将给我上面提到的不同数据类型/条件的计数

指数 列1 列2 列3
整数/浮点数 3个 3个 2个
空白的 1个 0 1个
0 1个 1个
文本 1个 1个 1个

我来自 Excel 所以在 Excel 条件下它会非常简单

Integer/Float 公式:我会使用 ISNUMBER 并创建一个 True 和 False 值的数组并对真实值求和
空白:我会简单地使用 COUNTIF(Column, "")
文本:与 ISNUMBER 类似,我会使用上面的 ISTEXT。

我试过在 Stack Overflow 上搜索这个但是我得到的最好的是

pd.DataFrame(df["Col1"].apply(type).value_counts())

然而,这并没有给我确切的 output。

我还想检查是否可以根据上述条件过滤掉值并获得合适的单元格。 例如 df[Col1==ISTEXT]

使用自定义函数分别计算每种类型:

def f(x):
    a = pd.to_numeric(x, errors='coerce').notna().sum()
    b = x.eq('').sum()
    c = x.isna().sum()
    d = len(x) - (a + b + c)
    return pd.Series([a,b,c,d], ['Integer/Float','Blank','Nan','Text'])

df = df.apply(f)
print (df)
               Col1  Col2  Col3
Integer/Float     3     3     2
Blank             1     0     1
Nan               0     1     1
Text              1     1     1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM