2016-08-25 18 views
2

私は、さらに操作するためにサブセットしたいpandasデータフレームに大きなデータセットを持っています。インデックス作成によるpandasデータフレームの列のサブセット

Sample Group AMP   ADP   ATP 
1  A  0.3840396 0.55635504 0.5844648 
2  A  0.3971521 0.57851902 -0.24603208 
3  A  0.4578926 0.68118957 0.19129746 
4  B  0.400222 0.58370811 0.01782915 
5  B  0.4110945 0.60208593 -0.6285537 
6  B  0.3307011 -0.82615087 -0.25354715 
7  C  0.3485679 -0.79597002 -0.17294609 
8  C  0.3408411 -0.8090222 0.76138965 
9  C  0.3856457 -0.73333568 0.27364299 

私はグループBのサンプルのみとATPのためにのみ対応する値が含まれていdfから新しいデータフレームdf2を作りたいとしましょう:

例えば、私はこのようになりますDFを持っています。私は一人でインデックス作成からこれを行うことができるはず

が、私はこのような何かをしたいと思います。(?):

df2 = df[(df['Group']=='B') & (df['ATP'])] 

私は明らかにこれを行うには、正しい方法ではありませんdf['ATP']を知っています。 df2を印刷するこの得られます

Sample Group  AMP  ADP  ATP 
    4  B   0.400222 0.583708 0.017829 
    5  B   0.411094 0.602086 -0.628554 
    6  B   0.330701 -0.826151 -0.253547 

理想的には、df2は次のようになります。

Sample Group ATP 
    4  B  0.017829 
    5  B  -0.628554 
    6  B  -0.253547 

いくつかの複雑なループに頼るか、単に手動で不要な列とその値を削除せずにこれを行う方法があります?

ありがとうございました!

答えて

2
df2 = df.loc[df['Group'] == 'B', ['Sample', 'Group', 'ATP']] 
+0

これは素晴らしいです!私はこのコードが単純にカンマの後に目的の列のインデックスを渡していると仮定します。私は単純な解決策があることを知っていた。ありがとうございました! – JeremyD

関連する問題