Pandas v1.0.1 与 v 2.0.3 read_csv 和/或 parse_dates 差异

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

在两台不同机器上使用两种不同的 Python 安装提取 csv 文件时,我收到不同的行为。我怀疑问题出在 Pandas 版本的差异上,但我想它可能出在 Python 安装的其他地方。

Pandas v1.0.1 将始终按预期解析输入日期/时间字段。数据帧始终返回“datetime64[ns, pytz.FixedOffset(-480)]”的数据类型。在 Pandas v2.0.3 安装中,完全相同的数据集有时会返回“datetime64[ns, UTC-08:00]”,但更常见的是返回“object”。然后它会抛出错误“只能使用带有日期时间值的 .dt 访问器”。

显然,幕后发生了一些变化。虽然我可以通过在旧安装上运行来实现我的目标,但我想现代化到当前版本。 v2.0.3 输出的不可预测性阻碍了我。

这是我认为相关的代码。

注意: 之前的程序员故意将数据类型定义为 str,因为我认为日期会出现乱码。那是使用以前的不同的非 CSV 文件格式。我不确定我是否仍然需要这个,但注释掉它似乎没有什么区别。如果我没记错的话,那就是我所有的调试失败。

    # Force read_csv to interpret everything as text, so it doesn't re-format any numbers (e.g., DateTime)
    data_types = {
                  'DateTime': str,
                  'Temperature(F)': str,
                  'RelativeHumidity(%)': str,
                  'Precipitation(in)': str,
                  'WindSpeed(mph)': str,
                  'WindAzimuth(degrees)': str,
                  'SolarRadiation(W/m2)': str,
                  'SnowFlag': str,
                  'GustSpeed(mph)': str,
                  'GustAzimuth(degrees)': str,
                  ' Temperature(F)': str,
                  ' RelativeHumidity(%)': str,
                  ' Precipitation(in)': str,
                  ' WindSpeed(mph)': str,
                  ' WindAzimuth(degrees)': str,
                  ' SolarRadiation(W/m2)': str,
                  ' SnowFlag': str,
                  ' GustSpeed(mph)': str,
                  ' GustAzimuth(degrees)': str,
                  'Tflag': str,
                  'RHflag': str,
                  'PCPflag': str,
                  'WSflag': str,
                  'WAflag': str,
                  'SRflag': str,
                  'GSflag': str,
                  'GAflag': str,
                  }

    processed = 0  # Track how many files are processed

    # list to store only .fw21 files
    files = []
    # Iterate directory
    for file in os.listdir(fw21_dir):
        # check only fw21 files
        if file.endswith('.fw21'):
            files.append(file)

    print(f"{len(files)} .fw21 files found.")

    for f in files:

        print(f"processing {f}")
        
        outname = f.replace('.fw21', '_REFORMATTED.csv')
        outfile = os.path.join(out_dir, outname)
         # Read input file into Pandas dataframe
        fw21_data = pd.read_csv(os.path.join(fw21_dir, f), parse_dates=['DateTime'], dtype = data_types)
        
        print(fw21_data.dtypes)

当 v2.0.3 抛出错误时,这是有问题的行:

fw21_data = pd.read_csv(os.path.join(fw21_dir, f), parse_dates=['DateTime'], dtype = data_types)

这是错误:

文件 ~\AppData\Local\Programs\Spyder\pkgs\panda

python-3.x pandas dataframe csv
© www.soinside.com 2019 - 2024. All rights reserved.