У меня есть dataframe вроде этого:граф вхождений определенных значений в dask.dataframe
df.head()
day time resource_record
0 27 00:00:00 AAAA
1 27 00:00:00 A
2 27 00:00:00 AAAA
3 27 00:00:01 A
4 27 00:00:02 A
и хотите узнать, как существует много вхождений определенного resource_records
.
Моя первая попытка была с помощью серии возвращенное value_counts()
, что кажется большим, но не позволяет мне, чтобы исключить некоторые ярлыки впоследствии, потому что нет drop()
реализован в dask.Series
.
Так что я попытался просто не печатать нежелательные этикетки:
for row in df.resource_record.value_counts().iteritems():
if row[0] in ['AAAA']:
continue
print('\t{0}\t{1}'.format(row[1], row[0]))
Который работает хорошо, но что, если я когда-либо хочу, чтобы продолжить работу над этими данными и действительно хотите это очищено. Так что я искал документацию немного больше и нашел mask()
, но это чувствует себя немного неуклюжим, а также:
records = df.resource_record.mask(df.resource_record.map(lambda x: x in ['AAAA'])).value_counts()
Я искал способ, который позволил бы мне просто рассчитывать отдельные значения, но count()
делает подсчитывать все значения, не являются NaN.
Тогда я нашел str.contains()
, но я не знаю, как обращаться с незадокументированным Скалярным типом я получаю возвращенный с этим кодом:
print(df.resource_record.str.contains('A').sum())
Выход:
dd.Scalar<series-..., dtype=int64>
Но даже после того, как смотреть на Код Scalar в dask/dataframe/core.py
Я не нашел способ получить его значение.
Как бы вы эффективно подсчитали появление определенного набора значений в вашем фреймворке?
Выяснив это, я понял, что 'dask.dataframe.drop' поддерживает только ось = 1. Выброс на фреймворке данных мог быть решением. – vollkorn
Чтобы получить значение Scalar (или любой другой коллекции dasky), вам нужен метод '.compute()'. – mdurant
А, спасибо, я наткнулся на '.compute()' раньше, но не получил из документации, что это мне поможет. – vollkorn