Pandasでサイトから引き抜いたテーブルがあるのですが、
ColumA | ColumB | ColumC | ColumD | ColumE
Data1 Data2 | Data3 | Data4 | Data5 |Data6
これを以下のように変更したい
Colum A | ColumB | ColumC | ColumD | ColumE | ColumF
Data1 |Data2 | Data3 | Data4 | Data5 |Data6
Python
1import pandas as pd 2 3filename = r"c:\users\someone\desktop\BP-NET.html" 4path = open(filename, 'r') 5 6destination = r"c:\users\someone\desktop\test.xlsx" 7 8#Extracting the 3 tables 9df1 = pd.io.html.read_html(filename, encoding='Shift JIS', attrs= {'class':'list2'})[0] 10df2 = pd.io.html.read_html(filename, encoding='Shift JIS', attrs= {'class':'list2'})[1] 11df3 = pd.io.html.read_html(filename, encoding='Shift JIS', attrs= {'class':'list2'})[2] 12 13#broker names 14df1_broker_name = 'broker1 (12345)' 15df2_broker_name = 'broker2 (23456)' 16df3_broker_name = 'broker3 (34567)' 17 18#Adding the broker names 19df = df1_broker_name + df2_broker_name + df3_broker_name 20 21#Inserting the broker names 22df1.insert(4, '販社名', df1_broker_name) 23df2.insert(4, '販社名', df2_broker_name) 24df3.insert(4, '販社名', df3_broker_name) 25 26#Specifying broker codes 27df1_broker_code = '12345' 28df2_broker_code = '23456' 29df3_broker_code = '34567' 30 31#Adding broker codes 32df = df1_broker_code + df2_broker_code + df3_broker_code 33 34#Inserting the broker codes to column 5 35df1.insert(5, '指定販売会社コード', df1_broker_code) 36df2.insert(5, '指定販売会社コード', df2_broker_code) 37df3.insert(5, '指定販売会社コード', df3_broker_code) 38 39#Adding three dataframes into one 40df = df1 + df2 + df3 41 42#Concatenating the dataframes 43df = pd.concat([df1, df2, df3]) 44 45# 奇数行 46tmp1 = df.iloc[::2].reset_index(drop=True) 47tmp1.columns = df.columns.get_level_values(0) 48 49# 偶数行 50tmp2 = df.iloc[1::2].reset_index(drop=True) 51tmp2.columns = df.columns.get_level_values(1) 52# 結合 53df = pd.concat([tmp1, tmp2], axis=1) 54 55print(df) 56#df.to_excel(destination, sheet_name='Test') 57
発生している問題・エラーメッセージ
AttributeError: 'DataFrame' object has no attribute 'str'
試したこと
new = df["No状況"].str.split(" ", n = 1, expand = True)
df["No"]= new[0]
df["状況"]= new[1]
df.drop(columns =["No状況"], inplace = True)
補足情報(Excelにおとすと次のようになります)
補足:
A) 列1の'No状況'は'No'と'状況'として、別々の列に分けたいです。それに伴い、000001から000042と合計が'No'がそこに入り、当日有りと合計が'状況'に入ってほしいです。
B) テーブル1(0行目~21行目)とテーブル3(36行目~46行目)なぜかテーブル2(22行目~35行目)のファンドコードのカラムとファンド名カラムだけが逆になっています。
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー