Я хочу загрузить файл .csv с этого веб-сайта (для прямой загрузки csv здесь ). Проблема, с которой я столкнулся, заключается в том, что строка, из которой я хочу начать импорт, имеет меньше столбцов, чем строк в более поздней части, и я просто не могу понять, как читать в pandas.
Действительно, это csv файл совсем не красивый.
Here is how I want to import the csv in pandas:
Ignore the first row where there are "Trade Date"
Separate data frame between sections(using for loop, separate wherever there is a blank row)
Store JPX Code(such as 16509005) and Instrument(such as FUT_TOPIX_2009) in additional columns.
Set headers ['institutions_sell_code', 'institutions_sell', 'institutions_sell_eng', 'amount_sell', 'institutions_buy_code', 'institutions_buy', 'institutions_buy_eng', 'amount_buy', 'JPX_code', 'instrument']
So the expected outcome will be:
Here is my try. I first tried to read the whole data into pandas:
import io
import pandas as pd
import requests
url = 'https://www.jpx.co.jp/markets/derivatives/participant-volume/nlsgeu000004vd5b-att/20200730_volume_by_participant_whole_day_J-NET.csv'
s=requests.get(url).content
colnames = ['institutions_sell_code', 'institutions_sell', 'institutions_sell_eng', 'amount_sell', 'institutions_buy_code', 'institutions_buy', 'institutions_buy_eng', 'amount_buy']
df=pd.read_csv(io.StringIO(s.decode('utf-8')), header=1, names = colnames)
ParserError: Error tokenizing data. C error: Expected 2 fields in line 6, saw 8
I assume this is because the header=1 has just two columns whereas other rows have eight. In fact when I set header=2
to exclude JPX Code and Instrument, it works. So how can I include the row with JPX Code and Instrument?
введите описание изображения здесь