2015-03-31 3 views
1
mukey cokey  hzdept_r hzdepb_r 
422927 11090397 0  20 
422927 11090397 20  71 
422927 11090397 71  152 
422927 11090398 0  18 
422927 11090398 18  117 
422927 11090398 117  152 

Я хотел бы подмножить вышедший над ним кадр данных, так что выбирается только ПЕРВЫЙ КОМПЛЕКТ Cokey (в данном случае 11090397). Конечно, поскольку это образец данных, решение должно масштабироваться до более крупных версий такого кадра данных.Подмножество данных на основе поля

В этом случае результирующий набор данных должен быть:

mukey cokey  hzdept_r hzdepb_r 
422927 11090397 0  20 
422927 11090397 20  71 
422927 11090397 71  152 

Я попытался с помощью GroupBy, но не знаете, как выбрать только первое значение cokey оттуда.

ответ

1

Другой метод просто взять первое уникальное значение:

In [97]: 

df[df['cokey'] == df['cokey'].unique()[0]] 
Out[97]: 
    mukey  cokey hzdept_r hzdepb_r 
0 422927 11090397   0  20 
1 422927 11090397  20  71 
2 422927 11090397  71  152 

Можно также использовать индексацию целого на основе, чтобы получить первое значение для фильтрации:

In [99]: 

df[df['cokey'] == df['cokey'].iloc[0]] 
Out[99]: 
    mukey  cokey hzdept_r hzdepb_r 
0 422927 11090397   0  20 
1 422927 11090397  20  71 
2 422927 11090397  71  152 
+0

Есть ли преимущество в первом уникальном значении по сравнению с первым значением? – cphlewis

+0

не совсем, это просто еще один метод получения значений из df – EdChum

+0

. В уникальной документации не указано, что он поддерживает порядок, тo. – cphlewis

2

Если вы ищете для первых все из cokey-х в ФР, которые равны первому cokey в Д.Ф., использование:

test[test['cokey'] == test.cokey[0]] 

Edit: @dsm прав, приведенный выше код вы дадите вам код нулевого индекса, поэтому, если ваш df не имеет индекса с автоматическим индексом, начинающегося с нуля, вы не можете получить фактический желаемый результат. Вместо того, чтобы использовать:

test[test['cokey'] == test.iloc[0]['cokey']] 
+0

спасибо Liam, но жесткое кодирование 11090397 не будет работать, поскольку больший фреймворк может иметь другие значения для cokey. – user308827

+0

@ user308827 А, так что вам просто нужен первый комплект, какой бы он ни был? –

+0

Точно! Я уточню вопрос, чтобы отразить это. – user308827

2

если ФР образец dataframe:

cokeys = set(df.cokey) #unique keys 
for k in cokeys: 
    print df[df.cokey==k] #sub-dataframes 

результат:

mukey  cokey hzdept_r hzdepb_r 
0 422927 11090397   0  20 
1 422927 11090397  20  71 
2 422927 11090397  71  152 
    mukey  cokey hzdept_r hzdepb_r 
3 422927 11090398   0  18 
4 422927 11090398  18  117 
5 422927 11090398  117  152 

если вы буквально только хотите первый dataframe, пусть k=df.iloc[0].cokey.

Смежные вопросы