2017-11-30 9 views
2

私は2つのデータフレームをダウンロードしました。それらを一緒に連結したい(私はプログラマーではありません)。 私はPython 2.7を使用しています。コンカートする方法

私のコードは次のようである:

from pandas_datareader.data import Options 
import datetime 
import pandas as pd 

pd.set_option('display.width',280) # default is 80 

aapl = Options('aapl', 'yahoo') 
expiry = datetime.date(2017, 1, 1) 

data_CALL = aapl.get_call_data(expiry=expiry) 
data_PUT = aapl.get_put_data(expiry=expiry) 

#The first DataFrame 
Q1=data_CALL.iloc[0:5, 0:8] 
print(Q1.head()) 

#The Second DataFrame 
Q2=data_PUT.iloc[0:5:, 0:8] 
print(Q2.head()) 


#I got this DataFrame 
concat=pd.concat([Q1,Q2]) 
print(concat) 

のように結果が見える:あなたの結果がどのように見える enter image description here

+2

'concat = pd.concat([Q1、Q2]、axis = 'columns')'を試したことがありますか? (https://pandas.pydata.org/pandas-docs/stable/generated/pandas.concat.htmlのドキュメントから) –

答えて

0

enter image description here

私は私の最後のデータフレームは、このように見えることを望みますgroupbyオブジェクトを使用した結果。グループ化属性としてデータをstrikeでグループ化しています。

このようにするには、データフレームごとに複合インデックスを削除する必要があります。その外観から、あなたは(Strik, Expiry, Type, Symbol)のインデックスを持っています。

私はこれがあなたのget_call_dataget_put_dataの関数でデータフレームを直接返すので、これが設定されているとしか思えません。現時点では、インデックスを設定せずに 生データフレームをそのままインポートすることをお勧めします。このようにstrike は、次のようにグループ化属性として簡単に使用できる列として残ります。実際にグループ化

は非常に簡単です:

combined = pd.concat([Q1, Q2]) 
grouped = combined.groupby('strike') # single grouping attribute 

結果を検証する:(ここではほんの一例)データを操作するために

for name, group in grouped: 
    print name 
    print group 

を:

# 1. using groupby builtin functions 

first_group = grouped.first() # you can do last() 
first_strike = grouped.get_group('115') # return you a dataframe as given by you 

# 2. using list 

group_list = list(grouped) 
first_group = group_list[0] # return a tuple with 2 elements: name and DataFrame 
first_strike_name = group_list[0][0] 
first_strike_data = group_list[0][1] 

あなたが読むことができますPython GroupBy hereについての詳細

0

あなたの説明によると、2つのデータフレームQ1 and Q2があり、両方を"Strike"インデックスに連結したいとします。同じコードの場合 は今、あなたはConcetenateddf.head()を行います場合は、あなたが期待しているとして、あなたは、同様の結果が得られますこれらのようなもの、

Concetenateddf=pd.concat([Q1.set_index('Strike'),Q2.set_index('Strike')], axis=1, join='inner') 

になります。 concetenated dataframe

関連する問題