2017-10-14 1 views
0

私は2つのパンダデータフレームを持っています。最初の列には21個の列があり、2番目の列には265個の列があります。私は、最初のデータフレームに存在する列だけを維持して、2番目のデータフレームをサブセット化したいと考えています。私は、リストにDF1の列の名前を割り当てることを試みた後、次のようにDF2サブセットし、そのリストを割り当てる:サブセットリストに列名のみを保持するパンダデータフレーム

cols = df1.columns.tolist() 
df2[[cols]] 

私はこれを行うと、私はというエラーを取得する:TypeError例外:非ハッシュタイプ:「リスト」を。

このエラーが発生しない限り、このタスクをどのように行うことができますか?

+1

'df2 [cols]'とするだけです – Zero

答えて

0

df1からすべての列がdf2使用サブセットである場合:

df3 = df2[df1.columns.intersection(df2.columns)] 

サンプル:

可能異なる列である場合

df1 = pd.DataFrame({'A':list('abcdef'), 
        'B':[4,5,4,5,5,4], 
        'D':[7,8,9,4,2,3]}) 


df2 = pd.DataFrame({'A':list('erthju'), 
        'B':[40,50,40,50,50,40], 
        'C':[7,8,9,4,2,3], 
        'D':[1,3,5,7,1,0], 
        'E':[5,3,6,9,2,4], 
        'F':list('aaabbb')}) 


df3 = df2[df1.columns] 
print (df3) 
    A B D 
0 e 40 1 
1 r 50 3 
2 t 40 5 
3 h 50 7 
4 j 50 1 
5 u 40 0 

df3 = df2[df1.columns] 

サンプル3210

df1 = pd.DataFrame({'A':list('abcdef'), 
        'B':[4,5,4,5,5,4], 
        'G':[7,8,9,4,2,3]}) 


df2 = pd.DataFrame({'A':list('erthju'), 
        'B':[40,50,40,50,50,40], 
        'C':[7,8,9,4,2,3], 
        'D':[1,3,5,7,1,0], 
        'E':[5,3,6,9,2,4], 
        'F':list('aaabbb')}) 


df3 = df2[df1.columns.intersection(df2.columns)] 
print (df3) 
    A B 
0 e 40 
1 r 50 
2 t 40 
3 h 50 
4 j 50 
5 u 40 
関連する問題