当前位置: 首页 > 知识库问答 >
问题:

熊猫数据帧系列列表-抑制浮点科学记数法

况明贤
2023-03-14

我有一个带有浮动列的Pandas DataFrame,我将其转换为列表,然后转换为字符串,然后写入文本文件以供其他用途。

例如:

df=pd.DataFrame([[0.0068149439999999999, 0.90550613999999996], [7.5699999999999997e-05, 0.48159182100000003], 
          [0.009679478, 0.50158892700000002], [0.020792602, 0.56266469899999993]], columns=['ColumnA', 'ColumnB'])

TextToWrite='ColumnA = (' + str(df['ColumnA'].tolist())[1:-1] + ')'
f=open('myfile.txt', 'w')
f.write(TextToWrite)

但是,我需要转换后的浮点数不使用科学记数法(本例中为7.569999997E-05)。抑制这些浮动的科学符号的最佳方式是什么?在Pandas数据框架中提前或在序列转换为列表后进行更合理吗?

我研究了“float\u format”参数,该参数可以使用“to\u csv”和“to\u string”命令来完成,但我不确定如何才能做到这一点,并且仍然以与上面相同的格式将字符串写入文本文件。

共有2个答案

侯博易
2023-03-14

通常,您可以使用astype(str),这更适合四舍五入。但由于您的数字太小,您必须通过“%f”显式抑制科学记数法。

def to_str(x): return '%f' % x
', '.join(df.ColumnA.apply(to_str).values)
濮阳
2023-03-14

(刚刚意识到我的答案迟到了,但如果你想更好地控制输出格式,我会留下一个替代答案)只需将TextToWrit行替换为:

TextToWrite='列=“”。7f“*4%元组(df['ColumnA]。tolist())

要得到这个:

列A=0.0068149 0.0000757 0.0096795 0.0207926

需要注意的是,您需要选择格式以提供足够的精度,因为这将强制十进制格式优于指数格式,即使结果为0.0。例如,如果使用。1你只会得到一堆零。

顺便说一句,我相信(通过测试)chrisaycock的%f相当于%8.6f,这在这里应该很好,但如果您的数据中有其他较小的值(例如,.0000000 9),那么您可能无法使用%f获得足够的精度。

 类似资料:
  • 问题内容: 我在熊猫中有一个DataFrame,其中一些数字用科学计数法(或指数计数法)表示,如下所示: 科学的表示法使应该进行轻松的比较成为不必要的困难。我认为正是21900的价值将其推向了其他水平。我的意思是1.0被编码。一! 这不起作用: 而且也没有实现抑制,而且我已经绝望了,只能为所有其他float值打开它,而无法关闭它。 问题答案: 您的数据可能是dtype。这是数据的直接复制/粘贴。将

  • 我对熊猫有些陌生。我有一个熊猫数据框,是一行23列。 我想把它转换成一个系列?我想知道做这件事最像蟒蛇的方式是什么? 我试过pd。系列(我的结果),但它抱怨。它还没有聪明到意识到它仍然是数学术语中的“向量”。 谢谢!

  • 我有这种熊猫。数据框。“a”、“b”是获得“x”和“y”时的条件。 我需要绘制关于相同条件的(x,y)结肠的折线图。预期结果图为: 当然,这个图像是由以下代码手动给出的: 我的问题是,当获得一个包含条件列x和y的数据帧时,如何动态地绘制如上所述的图。 列名是固定的。但是,条件列的值是动态更改的。因此,我不能使用10、20、100、200的值。 如果我有下面的“用a和b过滤”方法,我认为问题解决了:

  • 如果我有一个包含以下列的数据帧: 我想能够说:这里是一个数据框,给我一个列的列表,它是类型Object还是类型DateTime? 我有一个将数字(Float64)转换为两位小数的函数,我想使用这个特定类型的dataframe列列表,并通过这个函数将它们全部转换为2dp。 也许 吧:

  • 所以我已经初始化了一个空的熊猫数据帧,我想在这个数据帧中迭代地追加列表(或系列)作为行。最好的方法是什么?

  • 我有一系列不同元素的值。值计数显示如下。 我想为每个类别创建列,并为每一行标记True/False。 e. g. 我设法从所有项目中获取了这些类别的唯一列表。我还可以通过在此处的解决方案中给出的方法将其制作成单独的列。 但在我的情况下,数据是不完整的/变化的,因此给我一个DF,如下所示 有没有办法使用熊猫或其他python工具将其转换为所需的输出。我现在正在使用pandas.pivot_table