【问题标题】:Can't open CSV file in pandas python无法在 pandas python 中打开 CSV 文件
【发布时间】:2018-03-25 02:30:42
【问题描述】:

我运行了以下脚本 (https://github.com/FXCMAPI/FXCMTickData/blob/master/TickData34.py) 并在末尾添加了以下几行来下载文件:

    output_folder = '/Users/me/Documents/data/forex/'
    target_folder = os.path.join(output_folder, symbol, year)
    os.makedirs(target_folder, exist_ok=True)
    with open(os.path.join(target_folder, str(i) + '.csv'), 'wb') as outfile:
            outfile.write(data)

然后,我尝试使用 pandas 打开文件,如下所示:

x = pd.read_csv('/Users/me/Documents/data/forex/EURUSD/2015/29.csv')

但是,这就是我得到的:

    In [3]: x.info()
    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 2415632 entries, 0 to 2415631
    Data columns (total 3 columns):
    D             float64
    Unnamed: 1    float64
    Unnamed: 2    float64
    dtypes: float64(3)
    memory usage: 55.3 MB

    In [4]: x.dropna()
    Out[4]: 
    Empty DataFrame
    Columns: [D, Unnamed: 1, Unnamed: 2]
    Index: []

为什么数据框是空的?

如果我在 TextEdit 上打开文件,前几行实际上是这样的:

DateTime,Bid,Ask

07/19/2015 21:00:15.469,1.083,1.08332

07/19/2015 21:00:16.949,1.08311,1.08332

07/19/2015 21:00:16.955,1.08311,1.08338

【问题讨论】:

  • 在删除空值之前,数据框不为空。您需要使用 parse_dates = 'DateTime'

标签: python pandas csv


【解决方案1】:

显然,您数据中的每个字符都后跟空字符\x00。摆脱它们,一切都会好起来的:

outfile.write(data.replace(b'\x00',b''))

【讨论】:

    【解决方案2】:

    感谢您提供了一个非常具体且可重现的问题。

    我粘贴了您的代码并在 Windows 中运行它们,它确实只读取了 55MB 的空值。

    但我认为是pandas没有正确解析csv文件的问题,而不是它无法打开csv文件。

    但是,在我尝试了this answer 中列出的所有编码后,它根本没有产生,所以文件也可能有问题。

    我最终使它工作的方法是在 excel 中打开它并保存为不同的文件,然后 pandas 可以正确解析它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-17
      • 2015-04-20
      • 2017-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-24
      • 1970-01-01
      相关资源
      最近更新 更多