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

0x6upsns  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(112)

假设下表
| 索引|列1|列2|第3列|
| - -|- -|- -|- -|
| 第0页|10.5分|二点五|楠|
| 一个||的||
| 2个|二点九分|三、二|一种|
| 三个|瓦尔编号|楠|2个|
| 四个|三个|五点六|四个|
现在,我尝试获取的是一个汇总 Dataframe ,它将给予上面提到的不同数据类型/条件的计数
| 索引|列1|列2|第3列|
| - -|- -|- -|- -|
| 整数/浮点数|三个|三个|2个|
| 空白|一个|第0页|一个|
| 南|第0页|一个|一个|
| 文字|一个|一个|一个|
我来自Excel,因此在Excel中,条件反射非常简单

整型/浮点型公式:我将使用ISNUMBER并创建一个True和False值的数组,然后对True值求和
空白:我只会使用COUNTIF(栏,“”)
文本:与ISNUMBER类似,我将使用上面的ISTEXT。

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

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

然而,这并没有给予确切的输出。
我还想检查是否可以根据上述条件过滤出值,并获得拟合单元格。例如df[Col 1 ==ISTEXT]

6jygbczu

6jygbczu1#

使用自定义功能分别计算每种类型:

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

相关问题