2016-08-01 3 views
1

У меня есть следующий DateFrame:Выбор подмножество Панды DataFrame

record_id month day year plot species sex wgt 
    33320  33321  1 12 2002  1  DM M 44 
    33321  33322  1 12 2002  1  DO M 58 
    ...   ...  ... ... ... ... ... ... ... 

Я хочу, чтобы отобразить столбцы из года в WGT со значениями равным 27. Я сделал это по двум направлениям:

df_slice = df[df.year == 27] 
df_slice = df_slice.ix[:,'year':] 

Есть ли способ уменьшить его до одной строки?

ответ

2

Вы можете использовать ix:

print (df.ix[df.year == 27, 'year':]) 

образца (значение 2001 было добавлено):

print (df) 
    record  id month day year plot species sex wgt 
0 33320 33321  1 12 2001  1  DM M 44 
1 33321 33322  1 12 2002  1  DO M 58 

print (df.ix[df.year == 2001, 'year':]) 
    year plot species sex wgt 
0 2001  1  DM M 44 
+0

It было очень полезно. А если я хочу показывать годы: 2001 и 2002 и то же самое время. Я пробовал df.ix [df.year == 2001 & df.year == 2001, 'year':], но это не правильное решение. – Monica

+0

. Вы очень близки, добавьте только скобки 'df.ix [(df .year == 2001) & (df.year == 2001), 'year':], ' – jezrael

+1

Также, если мой ответ был полезен, не забывайте [accept] (http://meta.stackexchange.com/questions/5234/ how-do-accepting-a-answer-work). – jezrael

2

Есть ли способ уменьшить его до одной линии?

Вы можете легко объединить 2 строки в 1:

df_slice = df[df.year == 27].ix[:,'year':] 
Смежные вопросы