CSV 不能用数值解释
CSV cannot be interpreted by numeric values
(这是代码和 'user' 问题的混合体,但由于我怀疑问题出在代码上,所以我选择在 Whosebug 中 post 而不是 SuperUser Exchange)。
我使用 pandas.DataFrame.to_csv()
方法生成了一个 .csv 文件。该文件包含两列:一列是标签(文本),另一列是称为精度(浮点)的数值。用于分隔列的分隔符是逗号 (,),所有浮点值都使用点标点符号存储,如下所示:0.9438245862
即使将此列保存为浮点数,Excel 和 Google 工作表也会将其类型推断为文本。当我尝试将此列格式化为数字时,他们会忽略“0”。和 return 一个非常高的值而不是像这样的小数:
(文本)0.9438245862 =>(数字)9438245862,00
我仔细检查了我的 .csv 文件,再次使用 pandas.read_csv()
重新导入它并打印 dataframe.dtypes
并且该列成功导入为浮点数。
感谢您提供有关我所缺少的内容的指导。
谢谢,
一个简短的数据示例在这里最为有用。否则我们不知道你实际上是什么 writing/reading。但我会根据您提供的信息进行猜测。
pandas 数据框将有列名。这些列名称将是文本。除非您告诉 Excel/Sheets 使用第一行作为列名,否则它将不得不将该列视为文本。如果不是这种情况,您是否可以将数据帧的头部保存到 csv,在文本编辑器中检查它,然后查看 Excel/Sheets 如何导入它。然后在您的跟进中包括这五行和两列。
编码不一定是这里的问题,而是各种因素的组合。由于您的语言设置(例如,法语、荷兰语等),我假设您的计算机没有使用点字符作为小数点分隔符。相反,您的计算机(因此也 Excel)可能使用逗号作为小数点分隔符。
如果您想稍后使用 Excel 打开您的分析数据/工作,几乎不做任何更改,您可以选择更改 Excel 的工作方式或将数据存储到CSV 文件。
选择后者,可以为df.to_csv方法指定小数点字符。它有“十进制”关键字。然后您还应该记住,您必须在导入数据期间更改小数点字符(如果您想再次读取数据)。
继续采用您的 Python 代码的方法,您可以使用以下代码片段来更改将数据帧写入 csv 的方式
import pandas as pd
... some transformations here ...
df.to_csv('myfile.csv', decimal=',')
如果您想要使用 Python(使用 Pandas)读回该输出文件,您可以使用以下命令:
import pandas as pd
df = pd.read_csv('myfile.csv', decimal=',')
csv 文件本身应该是正确的。您和 Pandas 都知道定界符和浮点数格式是什么。但是 Excel 可能不同意你的看法,这取决于你的语言环境。确保的一个简单方法是写一个很小的 Excel sheet 在第一行包含一个文本值和一个浮点值。然后将文件导出为 csv 并控制分隔符和浮点格式。
AFAIK,更改您的 Python 代码以遵循 您的 Excel 期望尝试解释 Excel 的内容要容易得多CSV 文件的格式可能会有所不同...
我知道您可以在 Windows 系统中更改当前语言环境中的定界符和浮点格式。简单地说,它是一个 global 设置...
(这是代码和 'user' 问题的混合体,但由于我怀疑问题出在代码上,所以我选择在 Whosebug 中 post 而不是 SuperUser Exchange)。
我使用 pandas.DataFrame.to_csv()
方法生成了一个 .csv 文件。该文件包含两列:一列是标签(文本),另一列是称为精度(浮点)的数值。用于分隔列的分隔符是逗号 (,),所有浮点值都使用点标点符号存储,如下所示:0.9438245862
即使将此列保存为浮点数,Excel 和 Google 工作表也会将其类型推断为文本。当我尝试将此列格式化为数字时,他们会忽略“0”。和 return 一个非常高的值而不是像这样的小数:
(文本)0.9438245862 =>(数字)9438245862,00
我仔细检查了我的 .csv 文件,再次使用 pandas.read_csv()
重新导入它并打印 dataframe.dtypes
并且该列成功导入为浮点数。
感谢您提供有关我所缺少的内容的指导。
谢谢,
一个简短的数据示例在这里最为有用。否则我们不知道你实际上是什么 writing/reading。但我会根据您提供的信息进行猜测。
pandas 数据框将有列名。这些列名称将是文本。除非您告诉 Excel/Sheets 使用第一行作为列名,否则它将不得不将该列视为文本。如果不是这种情况,您是否可以将数据帧的头部保存到 csv,在文本编辑器中检查它,然后查看 Excel/Sheets 如何导入它。然后在您的跟进中包括这五行和两列。
编码不一定是这里的问题,而是各种因素的组合。由于您的语言设置(例如,法语、荷兰语等),我假设您的计算机没有使用点字符作为小数点分隔符。相反,您的计算机(因此也 Excel)可能使用逗号作为小数点分隔符。
如果您想稍后使用 Excel 打开您的分析数据/工作,几乎不做任何更改,您可以选择更改 Excel 的工作方式或将数据存储到CSV 文件。
选择后者,可以为df.to_csv方法指定小数点字符。它有“十进制”关键字。然后您还应该记住,您必须在导入数据期间更改小数点字符(如果您想再次读取数据)。
继续采用您的 Python 代码的方法,您可以使用以下代码片段来更改将数据帧写入 csv 的方式
import pandas as pd
... some transformations here ...
df.to_csv('myfile.csv', decimal=',')
如果您想要使用 Python(使用 Pandas)读回该输出文件,您可以使用以下命令:
import pandas as pd
df = pd.read_csv('myfile.csv', decimal=',')
csv 文件本身应该是正确的。您和 Pandas 都知道定界符和浮点数格式是什么。但是 Excel 可能不同意你的看法,这取决于你的语言环境。确保的一个简单方法是写一个很小的 Excel sheet 在第一行包含一个文本值和一个浮点值。然后将文件导出为 csv 并控制分隔符和浮点格式。
AFAIK,更改您的 Python 代码以遵循 您的 Excel 期望尝试解释 Excel 的内容要容易得多CSV 文件的格式可能会有所不同...
我知道您可以在 Windows 系统中更改当前语言环境中的定界符和浮点格式。简单地说,它是一个 global 设置...