Pandas“read_csv”函数为我的表中的所有单元格返回 NAN

问题描述 投票:0回答:4

我的原始 CSV 文件在每个单元格中都有浮点值,但在我使用

pd.read_csv()
读取文件后,它返回一个空白表格。我尝试设置函数的分隔符和编码,但它根本没有帮助。 CSV文件是由软件自动生成的,我无法检查设置的设置。

有什么方法可以将我的文件读取到具有正确值的数据帧吗?

>>> pd.read_csv('./HISTORY_LOG_05-31-2018.CSV')
D  Unnamed: 1  Unnamed: 2      ...       Unnamed: 108  Unnamed: 109  Unnamed: 110
0 NaN         NaN         NaN      ...                NaN           NaN           NaN
1 NaN         NaN         NaN      ...                NaN           NaN           NaN
2 NaN         NaN         NaN      ...                NaN           NaN           NaN
3 NaN         NaN         NaN      ...                NaN           NaN           NaN
4 NaN         NaN         NaN      ...                NaN           NaN           NaN
5 NaN         NaN         NaN      ...                NaN           NaN           NaN

[6 rows x 111 columns]

我将 CSV 文件简化为

A,B
0.000,0.000

0.000,0.000

我仍然得到如下结果:

>>> pd.read_table('./HISTORY_LOG_05-31-2018.CSV', encoding="cp1252")
    D
0 NaN
1 NaN
2 NaN

>>> pd.read_table('./HISTORY_LOG_05-31-2018.CSV', encoding="cp1252", delimiter=",")
    D  Unnamed: 1
0 NaN         NaN
1 NaN         NaN
2 NaN         NaN
python pandas csv
4个回答
24
投票

所以,我找到了答案,因为我也遇到了同样的问题。我的编码错误,因此无法正确读取文本。我在 Visual Studio Code 中打开它,发现编码是 UTF-16 LE。我的输出来自 powershell,所以你的输出可能也是如此,你可能只需要指定输出编码或更改 panda 的编码。

pd.read_csv("ADSearch.txt",encoding='UTF-16 LE')
Empty DataFrame
Columns: [lastname, firstname, username, site, email, Unnamed: 5, False, True]
Index: []

2
投票

我发现了这个问题,以下是一些诊断步骤:

首先使用命令行检查文件是否可读:

head file.txt

之后在 python3 控制台中尝试打印一些行:

with open("file.txt", encoding="latin1", errors='ignore') as f:
    for i in f:
        print([str(i.strip())])

如果您看到十六进制格式的行,即

\x00N\x00A\x00S\x00S\x00A\x00U\x00"\x00;
,则表示源文件中存在空字符。因此,要删除它们,只需按照
here
所述sed -i 's/\x0//g' file.txt,然后再次在Python中加载文件。


0
投票

与您提供的示例输入完美配合

还显示了示例输入

还显示了 Python 和 pandas 的版本

~ $ python
Python 3.6.4 |Anaconda custom (64-bit)| (default, Jan 16 2018, 18:10:19) 
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas as pd
>>> pd.read_csv('sample.csv')
     A    B
0  0.0  0.0
1  0.0  0.0
>>> pd.__version__
'0.22.0'
>>> exit()
~ $ cat sample.csv 
A, B
0.000, 0.000
0.000, 0.000

0
投票

我的问题是最左边的两列完全是空的,而且我的数据实际上是从 CSV 中的第 3 列开始的。结果,解析器会解析 NaN 的所有内容。编码 UTF 的答案对我来说是一个转移注意力的话题。我删除了最左边的两列,数据读取得很好。

© www.soinside.com 2019 - 2024. All rights reserved.