Неожиданный аргумент ключевого слова «конвейер»

#python #pandas #mongodb #dataframe

#python #панды #mongodb #фрейм данных

Вопрос:

Я пытаюсь сохранить следующий запрос в dataframe.

 db = conn["daune_leasing"]
collection = db["clienti_daune"]
pipeline=[{'$group':{
    "_id": {'MARCA': '$MARCA', "MODEL": "$MODEL"},
    "VENIT_ANUAL": {'$sum': '$VENIT_ANUAL'},
    "DAUNA": {'$COUNT': '$DAUNA'},
    "VALOARE_DAUNA": {'$sum': '$VALOARE_DAUNA'},
}},
    {"$sort": {"_id": 1}}]


cursor = collection.find({"AN_FABRICATIE": {'$lt': 2010,'$gt': 2012},
        "VALOARE_DAUNA": {'$gt': 30000}}, pipeline=pipeline)

df  = pd.DataFrame.from_dict(list(cursor))
cursor.close()

pprint(df)

df_plot=df.loc[(df['DAUNA']>100)]
df_plot.bar(x='_id', y='DAUNA',rot=0)
plt.xlabel("MODEL")
plt.ylabel("DAUNA")
plt.show();
 

Я получаю следующую ошибку

 cursor = collection.find({"AN_FABRICATIE": {'$lt': 2010,'$gt': 2012},
  File "C:UsersandreAppDataLocalProgramsPythonPython38-32libsite-packagespymongocollection.py", line 1523, in find
    return Cursor(self, *args, **kwargs)
TypeError: __init__()

 got an unexpected keyword argument 'pipeline'
 

Ответ №1:

Сделайте это так:

 pipeline = [
    {
        "$match" : {
            "AN_FABRICATIE" : {
                "$lt" : 2010,
                "$gt" : 2012
            },
            "VALOARE_DAUNA" : {
                "$gt" : 30000
            }
        }
    },
    {
        "$group" : {
            "_id" : {
                "MARCA" : "$MARCA",
                "MODEL" : "$MODEL"
            },
            "VENIT_ANUAL" : {
                "$sum" : "$VENIT_ANUAL"
            },
            "DAUNA" : {
                "$COUNT" : "$DAUNA"
            },
            "VALOARE_DAUNA" : {
                "$sum" : "$VALOARE_DAUNA"
            }
        }
    },
    {
        "$sort" : {
            "_id" : 1
        }
    }
]


cursor = collection.aggregate(pipeline)