【问题标题】:How to find the largest number of decimal places in a file?如何找到文件中的最大小数位数?
【发布时间】:2020-11-17 10:02:58
【问题描述】:

我想找出文件中最大的小数

 0   data = pd.read_csv("data.csv")
 1
 2  dec = abs(decimal.Decimal('20.122').as_tuple().exponent)
 3  print(dec)

所以这里第一行读取文件,第三行计算小数,第四行打印它,现在它打印 3('20.122' 有 3 个小数) 所以现在我想搜索 data.csv 并找到小数最多的数字(例如 2.0345),然后使用第三行计算小数

Is there a way to find the largest number of decimal places in an Excel

这正是我想要的,但它在 excel 中

我这里用的是pandas,只有一列叫“data”

【问题讨论】:

    标签: python pandas numpy matplotlib decimal


    【解决方案1】:

    假设您感兴趣的列包含 strings,正如您在示例中所展示的,您可以使用 .apply() 函数。

    #sample data
    df = pd.DataFrame([['4.5'], ['4.61'], ['4.73']], columns=['decimal'])
    

    首先创建一个函数来计算小数,就像你已经做的那样

    def count_decimals(input_string):
        return abs(decimal.Decimal(input_string).as_tuple().exponent)
    

    然后将此函数应用于您要计算小数的每一列(并将此结果分配给新列)

    df.assign(decimal_count=lambda x: x['decimal'].apply(count_decimals))
    

    结果

    decimal     decimal_count
    0   4.5     1
    1   4.61    2
    2   4.73    2
    

    【讨论】:

      【解决方案2】:

      你可以这样做 maxDecimalPlaces 变量将使用数据中存在的值的最高小数位进行更新。

      data = pd.read_csv("data.csv")
      maxDecimalPlaces = 0
      
      for index, row in data.iterrows():
          # considering you want to evaluate on a column say col_name
          decimalPlaces = abs(decimal.Decimal(row["col_name"]).as_tuple().exponent)
          
          if decimalPlaces > maxDecimalPlaces:
            maxDecimalPlaces = decimalPlaces
      

      假设 pd 是 pandas 并保持与问题中提供的相同方法来获取小数位。

      如果您想在多列上运行,请在 colnames 上添加另一个循环。

      【讨论】:

        猜你喜欢
        • 2018-08-27
        • 2011-10-31
        • 1970-01-01
        • 1970-01-01
        • 2017-02-13
        • 1970-01-01
        • 2018-09-17
        • 2020-11-17
        • 2023-01-05
        相关资源
        最近更新 更多