2017-03-20 13 views
1

私は初心者であり、これがリピートであれば謝ります。私は2つのデータフレームを有するパンダがシリーズメンバーシップに基づいて2つのデータフレームを作成

は、最初に局在している経済データ(DF1):

(index) (index)  2000  2010 Diff 
State Region  
NY  NYC   1000  1100 100 
NY  Upstate  200  270 70 
NY  Long_Island 1700  1800 100 
IL  Chicago  300  500 200 
IL  South   50  35 15 
IL  Suburbs  800  650 -150 

第二の状態と地域のリスト、(DF2)を有する:

index State Region 
0  NY  NYC 
1  NY  Long_Island 
2  IL  Chicago 

を最終的にどのようなI実行しようとしているのはdf2の州と地域の間のDiff列のt-testと、それ以外のすべてのdf1の列はdf2に含まれていません。しかし、私はまだグループを分けて管理していないので、テストを実行することはできません。

(多くの)私の最新の試みは、次のようになります。

df1['Region', 'State'].isin(df2['Region', 'State']) 

私もpd.mergeを試みたが、それは仕事を得るように見えることはできません。私はそれがマルチレベルインデックス作成のためだと思うが、私はまだdf2にない州/地域を取得する方法を知らない。

あなたの助けを事前に感謝し、

ミー

+0

期待される出力の例を挙げることができますか? –

答えて

1

あなたがMultiIndexesdifferenceを必要とし、その後locによって選択思える:

print (df1.index) 
MultiIndex(levels=[['IL', 'NY'], ['Chicago', 'Long_Island', 
            'NYC', 'South', 'Suburbs', 'Upstate']], 
      labels=[[1, 1, 1, 0, 0, 0], [2, 5, 1, 0, 3, 4]], 
      names=['State', 'Region']) 

print (df2.index) 
Int64Index([0, 1, 2], dtype='int64', name='index') 

print (df1.index.names) 
['State', 'Region'] 

#create index from both columns 
df2 = df2.set_index(df1.index.names) 
what is same as 
#df2 = df2.set_index(['State','Region']) 

mux = df1.index.difference(df2.index) 
print (mux) 
MultiIndex(levels=[['IL', 'NY'], ['South', 'Suburbs', 'Upstate']], 
      labels=[[0, 0, 1], [0, 1, 2]], 
      names=['State', 'Region'], 
      sortorder=0) 

print (df1.loc[mux]) 
       2000 2010 Diff 
State Region     
IL South  50 35 15 
     Suburbs 800 650 -150 
NY Upstate 200 270 70 

すべて一緒に:

df2 = df2.set_index(df1.index.names) 
df = df1.loc[df1.index.difference(df2.index)] 
print (df) 
+0

undestandの場合、別のデータフレームの「State」、「Region」列のインデックスに設定されている「State」、「Region」を比較する必要があるかどうかわかりませんか? – jezrael

+0

@jazrael、はい、コメントしたとおりです。 2つの異なる '州'、 '地域'グループの 'Diff'値を比較します。しかし、元のデータフレームはすべて数百の行を持ち、すべてのエントリを書き出すのは難しいでしょう。 ['IL'、 'NY']の代わりにdf1 ['State']型のメソッドが望ましい。ありがとうございます – SDS

+0

私は理解していません、 '['IL'、 'NY']'と書く必要はありません。 – jezrael

関連する問題