Pandas在麻木上附加0.0

2024-07-08 15:31:26 发布

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

我对熊猫有点困惑。我有一个文件,里面有很多不需要计算的数值。大多数都很好,但我有几个在结尾处附加了“.0”。在

以下是输入文件示例:

Id1         Id2      Age     Id3
"SN19602","1013743", "24", "23523"
"SN20077","2567897", "28", "24687"

以及正在生成的输出:

^{pr2}$

有人能解释一下为什么一些数值,而不是所有的数值都附加了.0,如果有什么方法我可以阻止它吗?当我使用CSV输出执行流程的下一步时,这是一个问题。在

我试图将数据帧和列本身转换为字符串,但没有产生影响。理想情况下,我不想列出每个要转换的列,因为a有非常多的列,并且必须手动遍历输出文件,以确定哪些列将附加.0并为其编写代码。有什么建议,谢谢。在

import pandas as pd
import csv

df_inputFile = pd.read_csv("InputFile.csv")
df_mappingFile = pd.read_csv("MappingFile.csv")
df_merged = df_inputFile.merge(df_mappingFile, left_on="Id", right_on="Id", how="left")
#This isn't affecting the output
df_merged.astype(str)
df_merged.to_csv("Output.csv", index=False, quoting=csv.QUOTE_ALL)

Tags: 文件csvimportid示例dfreadon
2条回答

^{}有一个参数float_format,它采用常规的浮点格式字符串。这应该是有效的:

df_merged.to_csv("Output.csv", index=False, quoting=csv.QUOTE_ALL, float_format='%.0f')

我喜欢打圈。它们很慢,但很容易理解。 这对于逻辑来说很优雅,但也允许每个列使用不同的格式/小数。在

比如:

final_out = open("Output.txt", 'w')

for index, row in df.iterrows():
    print ( '{:.0f}'.format(row['A']), '{:.0f}'.format(row['B']),  '{:.0f}'.format(row['C']), , sep=",", file=final_out )

我认为最好/更快的方法是使用表格或漂亮的打印机。在

首先将数据帧转换为数组,这很简单。在

^{pr2}$

然后你可以使用一些整洁的东西,比如表格。在

final_out = open("Output.txt", 'w')
from tabulate import tabulate as tb
print ( tb(array, numalign="right", floatfmt=".0f"), file=final_out )

你可以在表格或漂亮的打印机上多读一点。上面是一个上下文示例,可以帮助您开始。在

与上面的循环类似,tablate允许使用逗号分隔符。 https://pypi.python.org/pypi/tabulateat命令行实用程序的用法。在

很确定漂亮的打印机也可以做到这一点,可能是一个更好的选择。在


这两者都使用了新的python打印。如果您使用python 2.7,您将需要这个漂亮的小语句作为脚本中的第一个非注释行:

from __future__ import print_function

相关问题 更多 >

    热门问题