【问题标题】:Python pandas reading csv parsing problemPython pandas读取csv解析问题
【发布时间】:2022-01-04 09:22:09
【问题描述】:

数据集可以下载here。如果我用 Excel 或 R 打开文件,一切都很好,但是当我使用 pd.read_csv 加载它时,一切看起来都很奇怪。 Month 列合并到 Year 列。有谁知道导致问题的原因吗?

数据集如下所示:

年、月、每月_MSL、线性趋势、高_配置、低_配置。 1944,1,6.985,6.968,6.982,6.954, 1944,2,7.025,6.968,6.982,6.954, 1944,3,7.054,6.968,6.982,6.954, 1944,4,6.980,6.968,6.982,6.955, 1944,5,6.967,6.968,6.982,6.955,
import pandas as pd
pd.read_csv("330-071_meantrend.csv")
# I also tried
pd.read_csv("330-071_meantrend.csv", sep="\s*,\s*")

# Results
    Year    Month   Monthly_MSL Linear_Trend    High_Conf.  Low_Conf.
1944    1   6.985   6.968   6.982   6.954   NaN
1944    2   7.025   6.968   6.982   6.954   NaN
1944    3   7.054   6.968   6.982   6.954   NaN
1944    4   6.980   6.968   6.982   6.955   NaN
1944    5   6.967   6.968   6.982   6.955   NaN
... ... ... ... ... ... ...
2006    7   7.074   7.079   7.092   7.066   NaN
2006    8   7.124   7.079   7.092   7.066   NaN
2006    9   7.110   7.079   7.093   7.066   NaN
2006    10  7.185   7.079   7.093   7.066   NaN
2006    11  7.086   7.080   7.093   7.066   NaN

以上都不起作用。

R 工作正常。

library(reader)
read_csv("330-071_meantrend.csv")

【问题讨论】:

标签: python pandas csv


【解决方案1】:

您遇到的问题似乎是由于尾随逗号(分隔符)造成的。您可以像这样构建数据框:

import requests
import pandas
import tempfile

with requests.Session() as session:
    (r := session.get('https://tidesandcurrents.noaa.gov/sltrends/data/330-071_meantrend.csv', stream=True)).raise_for_status()
    with tempfile.TemporaryFile(mode='w+') as temp:
        for line in r.iter_lines():
            temp.write(line.decode().rstrip(',')+'\n')
        temp.seek(0)
        df = pandas.read_csv(temp)
        print(df)

【讨论】:

  • 你可以只使用read_csvindex_col=False,就像在副本中一样。
  • 我的回答是针对所提出的问题的。另请注意答案前言中的“可以”一词。
猜你喜欢
  • 2016-03-12
  • 2012-06-28
  • 2013-02-06
  • 2022-08-18
  • 1970-01-01
  • 2017-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多