2017-11-24 17 views
1

でフィルタリング:私はシボレーのための年でMPGを意味を取得するには、次を試してみましたGROUPBYと、このようなデータフレームのためにパンダ

auto.groupby('yr')['mpg'].mean() 

mpg yr name 
0 18  70 chevrolet malibu 
1 15  70 buick skylark 
2 18  70 ford torino 
3 16  70 chevrolet el camino 
4 17  71 chevrolet chevelle 

私はこのような年でMPGを意味し得ることができます:

auto.groupby(['yr', auto['name'].str.contains('chevrolet')])['mpg'].mean() 

それはそうのように、どこ偽非シボレーと真がシボレーであるが、追加の真/偽ブール値の列を作成しますが:

yr name  
70 False 16.5 
     True 17.0 
71 False NaN 
     True 17.0 

私は何を探していますが次のとおりです。

yr mpg 
x  y 

私の試みは、仕事とBなかった理由あなたはA)が説明していただけます)私のミスを修正し、それがいることを実行する必要がある理由を説明する助け方法。 ありがとうございました!

答えて

1

私たちは、あなたの方法は、[FALSE TRUE、]で別のGROUPBYキーを作成し、その後、パンダがそれをGROUPBYうと列yr

EDIT groupby

auto[auto['name'].str.contains('chevrolet')].groupby('yr')['mpg'].mean() 
Out[226]: 
yr 
70 17 
71 17 
Name: mpg, dtype: int64 

前にフィルタリングする必要があります:あなたが

これはあなたのデータフレームの外観と考えることができます

auto['yourkey']=auto['name'].str.contains('chevrolet') 
auto 
Out[228]: 
    mpg yr    name yourkey 
0 18 70 chevroletmalibu  True 
1 15 70  buickskylark False 
2 18 70   fordtorino False 
3 16 70 chevroletelcamino  True 
4 17 71 chevroletchevelle  True 
+0

@ user8834780 Yw〜:-)、助けがあれば、それを受け入れてアップヴォートすることを検討できますか? – Wen

+0

8分以上待つ必要がありますが、絶対に – user8834780

関連する問題