输入输出浮点数

2024-04-16 09:20:12 发布

您现在位置:Python中文网/ 问答频道 /正文

Python似乎对浮点数做了一些有趣的事情,它从我给它的输入中产生不同的浮点数,我希望浮点数与输入保持一致。你知道吗

这里我有一个小的测试数据集:

import pandas as pd

df = {'ID': ['H1','H2','H3','H4','H5','H6'],
      'Length': [72, 72, '', 72, 72,'' ],
      'AA1': ['C','C','C','C','C','C'],
      'AA2': ['W','W','W','W','W','W'],
       'Freq': [0.14532872, 0.141868512,0.138408304, 0.14532872,0.138408304, 0.138408304 ],
       'M':    [-282.0570386,-279.1090993,-276.16116,-282.0570386,-274.7748657,-274.6160337]}

df = pd.DataFrame(df)

它应该看起来像:

    df
  Out[2]: 
      AA1 AA2      Freq    ID     Length           M
   0   C   W  0.14532872   H1     72         -282.0570386
   1   C   W  0.141868512  H2     72         -279.1090993
   2   C   W  0.138408304  H3                -276.16116
   3   C   W  0.14532872   H4     72         -282.0570386
   4   C   W  0.138408304  H5     72         -274.7748657
   5   C   W  0.138408304  H6                -274.6160337

但实际上看起来是这样的,请注意'Freq'和'M'列中浮点数的差异:

df
Out[2]: 
     AA1 AA2      Freq     ID Length           M
  0   C   W     0.145329  H1     72     -282.057039
  1   C   W     0.141869  H2     72     -279.109099
  2   C   W     0.138408  H3            -276.161160
  3   C   W     0.145329  H4     72     -282.057039
  4   C   W     0.138408  H5     72      -274.774866
  5   C   W     0.138408  H6             -274.616034

当我运行脚本只是简单地过滤掉我不想要的行时:

import pandas as pd


df = pd.read_csv('test.txt', sep='\t' )

df2 = df[(df['Length'] != 0 ) & (df['AA1'] == 'C')& (df['AA2']== 'C')]

df2.to_csv('results.txt', sep = '\t', index=False)

是的结果.txt“文件包含与输入不同的奇怪浮点数,必须有一种方法将浮点数作为输入输出,但我在网上找不到相关主题。你知道吗


Tags: txtiddfh2h1lengthh4h3
1条回答
网友
1楼 · 发布于 2024-04-16 09:20:12

浮点数很奇怪:https://ece.uwaterloo.ca/~dwharder/NumericalAnalysis/02Numerics/Double/paper.pdf

从他们身上看到奇怪的行为并不少见。如果您没有对它们进行任何计算,我建议您首先将它们转换为字符串,这样它们就会以您想要的格式存储。你知道吗

相关问题 更多 >