Выбирать имена категорий с помощью Mongoose [duplicate]

Вы можете sum целое DataFrame и делить на state total:

# Copying setup from Paul H answer
import numpy as np
import pandas as pd
np.random.seed(0)
df = pd.DataFrame({'state': ['CA', 'WA', 'CO', 'AZ'] * 3,
               'office_id': list(range(1, 7)) * 2,
               'sales': [np.random.randint(100000, 999999) for _ in range(12)]})
# Add a column with the sales divided by state total sales.
df['sales_ratio'] = (df / df.groupby(['state']).transform(sum))['sales']

df

Возвращает

    office_id   sales state  sales_ratio
0           1  405711    CA     0.193319
1           2  535829    WA     0.347072
2           3  217952    CO     0.198743
3           4  252315    AZ     0.192500
4           5  982371    CA     0.468094
5           6  459783    WA     0.297815
6           1  404137    CO     0.368519
7           2  222579    AZ     0.169814
8           3  710581    CA     0.338587
9           4  548242    WA     0.355113
10          5  474564    CO     0.432739
11          6  835831    AZ     0.637686

Но обратите внимание, что это работает только потому, что все столбцы, отличные от state, являются числовыми, что позволяет суммировать весь DataFrame. Например, если office_id является символом вместо этого, вы получаете сообщение об ошибке:

df.office_id = df.office_id.astype(str)
df['sales_ratio'] = (df / df.groupby(['state']).transform(sum))['sales']

TypeError: неподдерживаемый тип операндов для /: 'str' и 'str'

52
задан Kit Sunde 19 May 2011 в 03:40
поделиться

3 ответа

Просто, чтобы дать обновление для Mongoose 3.x:

MyModel.find().distinct('_id', function(error, ids) {
    // ids is an array of all ObjectIds
});
90
ответ дан Risadinha 21 August 2018 в 12:32
поделиться

Я прочитал исходный код, а родной драйвер node-mongodb - это класс полномочий. Итак, объект соединения. Итак, после того, как вы сделали mongoose.connect (mongodb: //), вы можете сделать это.

if(mongoose.connections.length > 0) {
  var nativeconn = mongoose.connections[0].conn;
  nativeconn.person.distinct('born_in_city', function(error, results){

  });
}
2
ответ дан Bryan 21 August 2018 в 12:32
поделиться
  • 1
    Спасибо за предложение. mongoose.connections[0].conn для меня не определено, однако я уверен, что mongoose.connection возвращает то же самое для активного соединения. Хотя я не могу использовать mongoose.connection.person, как вы сказали, вместо этого я позвонил mongoose.connection.db.collections( .. ), но как только я побежал collection.distinct( .. ), результаты были пустыми. Я обновил свой вопрос, чтобы отразить мои попытки. – Kit Sunde 19 May 2011 в 03:43

В моей программе этот код работает.

Person.collection.distinct("born_in_city", function(error, results){
  console.log(results);
});

by node.js v0.4.7, mongoose 1.3.3

14
ответ дан yshgt 21 August 2018 в 12:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: