2017-01-17 15 views
0

'日付'列にパンダを使用して2つのデータフレームを結合しようとしています。私は通常df2 = pd.concat([df、df1]、axis = 1)を使用しますが、なんらかの理由でこれは機能しません。2つの異なるデータフレームを連結/結合/結合するパンダ

この例では、SQLファイルからデータを取り出し、年月列をマージしてピボットする 'Date'という新しい列を作成しています。 Whneは2つのデータフレームを連結して連結し、データフレームは併合されずに並べて表示されます。

何が立ち上がっ:私は来てほしい何 日犬

の猫のカウント日数:犬

の猫カウントの

日カウント任意のアイデア? 私の他の問題は、Dateカラムがdatetime関数ではなく文字列として出力されるようにすることです。解決策を考えるときはこれを心に留めてください。私はあなたがコードを削除する必要があると思います

executeScriptsFromFile('cats.sql') 
df = pd.DataFrame(cursor.fetchall()) 
df.columns = [rec[0] for rec in cursor.description] 
monthend = {'Q1':'3/31','Q2':'6/30','Q3':'9/30','Q4':'12/31'} 
df['Date']=df['QUARTER'].map(monthend)+'/'+ df['YEAR'] 
df['Date'] = pd.to_datetime(df['Date']) 
df10= df.pivot_table(['Breed'], ['Date'], aggfunc=np.sum,fill_value=0) 
df10.reset_index(drop=False, inplace=True) 
df10.reindex_axis(['Breed', 'Count of Cats'], axis=1) 
df10.columns = ('Breed', 'Count of Cats') 


executeScriptsFromFile('dogs.sql') 
df = pd.DataFrame(cursor.fetchall()) 
df.columns = [rec[0] for rec in cursor.description] 
monthend = {'Q1':'3/31','Q2':'6/30','Q3':'9/30','Q4':'12/31'} 
df['Date']=df['QUARTER'].map(monthend)+'/'+ df['YEAR'] 
df['Date'] = pd.to_datetime(df['Date']) 
df11= df.pivot_table(['Breed'], ['Date'], aggfunc=np.sum,fill_value=0) 
df11.reset_index(drop=False, inplace=True) 
df11.reindex_axis(['Breed', 'Count of Dogs'], axis=1) 
df11.columns = ('Breed', 'Count of Dogs') 
df11a= df11.round(0) 

df12= pd.concat([df10, df11a],axis=1) 
+1

あなたのデータフレームのいくつかのサンプルを追加することができます。string使用に変換インデックスのも

? 'df10.index'と' d11.index'の型の違いもありますか?これはうまくいくはずです。 – jezrael

+1

わかりませんが、 'df10.reset_index(drop = False、inplace = True)'と 'df11.reset_index(drop = False、inplace = True)'を削除する必要があるようです。 – jezrael

+0

または、1つのレベルだけを削除する必要があります。両方のデータフレームで 'date 'を両方のデータフレームでインデックスとして使用する必要があります。 – jezrael

答えて

1

は、ここに私のコードです

df10.reset_index(drop=False, inplace=True) 
df11.reset_index(drop=False, inplace=True) 

ためdateによってconcatためindexで必要レベルdateが。

df.inde = df.index.astype(str) 
関連する問題