def parse_day_data(data): df = pd.DataFrame(columns=['date', 'open', 'high', 'low', 'close', 'volume', 'amount']) for i in range(len(data)): row_data = struct.unpack('iiiiifd', data[i]) date = str(row_data[0]) open_price = row_data[1] / 100.0 high = row_data[2] / 100.0 low = row_data[3] / 100.0 close = row_data[4] / 100.0 volume = row_data[5] amount = row_data[6] df.loc[i] = [date, open_price, high, low, close, volume, amount] return df
时间: 2024-03-07 22:47:50 浏览: 89
【数据挖掘重要笔记day31】详细完解决iris = sns.load_dataset(‘iris’)出来EmptyDataError: No columns to parse from file报错
这段代码中的`parse_day_data`函数依旧存在问题。在第6行代码中,`struct.unpack`函数的第二个参数`data[i]`应该是一个bytes-like object,但实际上它是一个int类型,因此会导致TypeError。解决方法同样是将`data[i]`转换为bytes类型,如下所示:
```python
def parse_day_data(data):
df = pd.DataFrame(columns=['date', 'open', 'high', 'low', 'close', 'volume', 'amount'])
for i in range(len(data)//32):
row_data = struct.unpack('iiiiifd', bytes(data[i*32:(i+1)*32]))
date = str(row_data[0])
open_price = row_data[1] / 100.0
high_price = row_data[2] / 100.0
low_price = row_data[3] / 100.0
close_price = row_data[4] / 100.0
volume = row_data[5]
amount = row_data[6]
df.loc[i] = [date, open_price, high_price, low_price, close_price, volume, amount]
return df
```
修改后的代码中,在循环中使用`i*32`和`(i+1)*32`来指定每个数据块的起始位置和终止位置,然后将这个数据块转换为bytes类型。这样就可以正确的解析数据了。
阅读全文