python-3.x - pandas.read_csv() 的 OSError:从文件初始化失败
问题描述
我在尝试从.txt
格式csv
为pandas.read_csv()
. 我的代码工作正常,只是当我尝试在 for 循环中组装文件路径时它失败并出现错误:
import os
import pandas as pd
root_folder = 'C:\\some\\root\\folder'
filename = 'Log_data.txt'
def get_data(root_folder, filename):
df_list = []
for folder in os.listdir(root_folder + '\\' + 'measurements'):
df = pd.read_csv(root_folder + '\\measurements\\' + folder + '\\' +
filename,
sep=' ',
names= ['Date','Time','Rx power','Rx snr',
'BNO Az','HMC Az','Ref Az','Now Az',
'CONTR TGT Az','YUN TGT Az',
'Ref TGT Az','TGT Az','BNO El',
'HMC El','Ref El','Now El',
'CONTR TGT El','YUN TGT El',
'Ref TGT El','TGT El','Ref Lat',
'YUN Lat','Now Lat','Ref Lon',
'YUN Lon','Now Lon','YUN Flag Az',
'YUN Flag El','YUN Modus',
'Ref HDG dGPS','Ref HDG Trailer'])
df['File'] = folder[9:]
df['Date'] = pd.to_datetime(df['Date'], format='%Y-%m-%d')
df['Time'] = pd.to_datetime(df['Time'], format='%H:%M:%S.%f')
df['Time'] = df['Time'] - df['Time'][0]
df['Time'] = df['Time'].dt.total_seconds()
df = df.set_index([df.index, 'File', 'Date', 'Time'], drop = True)
df_list.append(df)
df_big = pd.concat(df_list)
return df_big
df = get_data(root_folder, filename)
解决方案
我找到了错误来源/解决方案。问题在于我的文件夹名称中的德语变音符号。我必须确保对 read_csv() 使用正确的编码。
df = pd.read_csv(root_folder + '\\Messdaten\\' + folder + '\\' + filename,
encoding='iso-8859-1', ....
推荐阅读
- java - 如何为构建应用程序的当前事件创建 sbt 插件?
- amazon-web-services - 配置 API Gateway 以尊重 lambda 函数的 x-amz-log-type
- c# - 使用 where 子句转换为通用接口
- python - 在字符串的开头添加一个数字
- azure - OpenID Connect 和 Azure AD 用户和组
- java - 避免在从复杂 json 创建的 hashmap 中嵌套 if
- javascript - 从 Javascript 发布变量值并使用 Python(UV4L、WebRTC、Raspberrypi3)读取它们
- swift - Swift 中的字典扩展无法识别
- excel - 将具有不同但分组的行响应的 Word 文档转换为 Excel/CSV 文档?
- angular - ANGULAR 5:将任何对象投射到对象