读取Deutsche Börse公开S3数据集仅返回CSV表头问题求解
S3读取德意志交易所数据集仅返回表头的解决方法
根本原因
你当前读取的2020-03-03_BINS_XETR23.csv对应XETR市场23:00时段的交易数据,XETR常规交易时段为中欧时间8:00-22:00,该时段本身无交易记录,因此CSV文件仅包含表头无实际数据,你的代码逻辑没有错误。
解决步骤
- 更换有效时段的文件读取:选择当日8到22点对应的CSV文件即可获取到完整的交易数据,比如将key替换为
2020-03-03/2020-03-03_BINS_XETR14.csv读取14点时段的数据 - 可以优化读取代码,直接读取S3返回的流对象,减少不必要的字符串转存操作,优化后的示例代码如下:
import pandas as pd import boto3 s3 = boto3.resource('s3', region_name='eu-central-1') bucket = s3.Bucket('deutsche-boerse-xetra-pds') # 替换为非23点的有效时段文件路径 target_key = '2020-03-03/2020-03-03_BINS_XETR14.csv' csv_stream = bucket.Object(key=target_key).get()['Body'] df = pd.read_csv(csv_stream)
- 若要提前校验文件是否有数据,可以先读取前几行内容确认:
content = bucket.Object(key=target_key).get()['Body'].read().decode('utf-8') # 打印前10行内容,确认是否存在表头之外的有效数据行 print(content.splitlines()[:10])
内容的提问来源于stack exchange,提问作者Muhammad Abdullah
相关产品推荐
相关产品推荐

