Pandas to_csv 现在没有正确写入值
Pandas to_csv now not writing values correctly
我正在使用 csv 来保存如下所示的数据帧:
PredictionIdx CustomerInterest
0 fe789a06f3 0.654059
1 6238f6b829 0.654269
2 b0e1883ce5 0.666289
3 85e07cdd04 0.664172
其中我有一个值 '0e15826235' 在第一个 column.I 中使用 pandas to_csv() 将此数据帧写入 csv。但是,当我在 google excel 或 libreoffice 中打开此 csv 时,它在 excel 中显示 0E,在 libreoffice 中显示 0。在 kaggle 中提交时给我带来了问题。但这里要注意的一点是,当我使用 pandas read_csv 读取相同的 csv 时,它会在数据框中正确显示上述值。
对我来说,下面的代码可以正确处理 google 电子表格:
import pandas as pd
df = pd.DataFrame({'PredictionIdx': ['fe789a06f3',
'6238f6b829',
'b0e1883ce5',
'85e07cdd04'],
'CustomerInterest': [0.654059,
0.654269,
0.666289,
0.664172]})
df.to_csv('./test.csv', index = None)
此外,csv 是一种非常简单的文本格式,它不包含任何有关数据类型的信息。
因此,您可以按照 Nihal 的建议使用 df.to_excel()
,或者在您最喜欢的电子表格查看器中调整列类型设置。
如第一条评论所述,错误是由您选择的编辑器引起的。许多编辑器会使用某些版本的科学计数法,将 e
(在特定位置,如第二个字符)作为指数的指示符。例如,Excel 会将其读作 "base X raised to the power Y",其中 X 是 e
之前的数字,Y 是 e
之后的数字。 This is a brief description of Excel's scientific notation.
这不会发生在其他单元格条目中,因为似乎还有其他类似字符串的字符。 Excel、Libre 和可能的 Google 试图解释条目是什么,而不是从字面上理解它。
在你的问题中,你用单引号写了'0e15826235',表明它可能是一个字符串,但这可能是在将值写入文件时要确保的东西 -- Excel 和其他人可能不知道这是一个字符串文字。
一般来说,检查值的格式并考虑您最终的编辑器可能 "think" 打开时的格式。具体来说,对于 Excel,字符串开头的单引号字符将强制 Excel 将其作为字符串读取。参见 。
我正在使用 csv 来保存如下所示的数据帧:
PredictionIdx CustomerInterest
0 fe789a06f3 0.654059
1 6238f6b829 0.654269
2 b0e1883ce5 0.666289
3 85e07cdd04 0.664172
其中我有一个值 '0e15826235' 在第一个 column.I 中使用 pandas to_csv() 将此数据帧写入 csv。但是,当我在 google excel 或 libreoffice 中打开此 csv 时,它在 excel 中显示 0E,在 libreoffice 中显示 0。在 kaggle 中提交时给我带来了问题。但这里要注意的一点是,当我使用 pandas read_csv 读取相同的 csv 时,它会在数据框中正确显示上述值。
对我来说,下面的代码可以正确处理 google 电子表格:
import pandas as pd
df = pd.DataFrame({'PredictionIdx': ['fe789a06f3',
'6238f6b829',
'b0e1883ce5',
'85e07cdd04'],
'CustomerInterest': [0.654059,
0.654269,
0.666289,
0.664172]})
df.to_csv('./test.csv', index = None)
此外,csv 是一种非常简单的文本格式,它不包含任何有关数据类型的信息。
因此,您可以按照 Nihal 的建议使用 df.to_excel()
,或者在您最喜欢的电子表格查看器中调整列类型设置。
如第一条评论所述,错误是由您选择的编辑器引起的。许多编辑器会使用某些版本的科学计数法,将 e
(在特定位置,如第二个字符)作为指数的指示符。例如,Excel 会将其读作 "base X raised to the power Y",其中 X 是 e
之前的数字,Y 是 e
之后的数字。 This is a brief description of Excel's scientific notation.
这不会发生在其他单元格条目中,因为似乎还有其他类似字符串的字符。 Excel、Libre 和可能的 Google 试图解释条目是什么,而不是从字面上理解它。
在你的问题中,你用单引号写了'0e15826235',表明它可能是一个字符串,但这可能是在将值写入文件时要确保的东西 -- Excel 和其他人可能不知道这是一个字符串文字。
一般来说,检查值的格式并考虑您最终的编辑器可能 "think" 打开时的格式。具体来说,对于 Excel,字符串开头的单引号字符将强制 Excel 将其作为字符串读取。参见