【问题标题】:How can I count the number of floats or integers in a column of a Pandas dataframe?如何计算 Pandas 数据框列中的浮点数或整数数?
【发布时间】:2021-06-05 00:26:20
【问题描述】:

我有一个 Pandas 数据框,并且有一列是浮点类型。但是带有小数的数字对于此列没有意义。所以我想知道这个列中有多少个浮点数,然后我想删除我在这个列中有一个浮点数的整行。 另一种方法是计算整数的数量,然后从总行数中减去。

示例数据集

我有什么:

A B C
0.5 0.1 2.0
0.8 0.9 3.5
0.6 0.2 1.0

我需要什么:

第一个计数浮点数或整数:

C 1(因为“C”列中只有一个浮点数或)或者:C 2(因为“C”列中有两个整数)

第二次删除带有浮点数的行:

A B C
0.5 0.1 2.0
0.6 0.2 1.0

我尝试以与处理缺失值相同的方式处理此问题,但这不起作用。

# Count Integers
print(Data.is_integer().sum())
# Delete rows where "C" is not an integer
Data=Data.drop(Data[Data.C.is_integer()=0].index)

两者都不起作用。顺便说一句,我在 Colab 中使用 Python

【问题讨论】:

    标签: python pandas google-colaboratory data-cleaning


    【解决方案1】:

    您可以使用取模运算符删除 C 列中包含带小数部分的数字的所有行。

    您可能还想将列“C”转换为整数。

    import pandas as pd 
    
    df = pd.DataFrame({'A':[0.5,0.8,0.6], 'B':[0.1, 0.9, 0.2], 'C':[2.0, 3.5, 1.0]})
    
    df = df[df['C'] % 1 == 0]
    
    df['C'] = df['C'].astype(int)
    

    【讨论】:

      【解决方案2】:

      根据我的理解,您可以尝试使用 mod 并在 mod 为 0 的行中过滤:

      df[df['C'].mod(1).eq(0)]
      

           A    B    C
      0  0.5  0.1  2.0
      2  0.6  0.2  1.0
      

      【讨论】:

        【解决方案3】:

        您可以编写一个函数,在其中传递.is_integer() == True 的条件以返回数字,在其他条件下您可以将其输出为numpy.nan,稍后使用.dropna 函数删除所有nan 单位。

        【讨论】:

          【解决方案4】:

          整数和浮点数是两种不同的数值数据。整数(通常称为 int)是没有小数点的数字。浮点数是一个浮点数,这意味着它是一个有小数位的数字。当需要更高的精度时使用浮点数。所以这种情况下你使用浮点数你不需要整数

          【讨论】:

          • 我的示例中的 C 列类似于“汽车数量”。 3.5 的内容对于本专栏没有意义,因为您不能拥有半辆汽车。所以这个数据点是错误的,对我来说毫无用处。我想找出这些错误并删除整行。我的列中的值实际上都是浮点数,但小数点都应该为 0。所以我尝试了 is_integer 方法。因为这个方法给出 2.0 的 True 和 3.5 的 False。
          猜你喜欢
          • 1970-01-01
          • 2018-03-22
          • 1970-01-01
          • 2023-04-08
          • 2013-07-02
          • 2022-08-12
          • 2013-04-01
          • 1970-01-01
          • 2015-09-09
          相关资源
          最近更新 更多