Python: pandas groupby, использующий несколько объектов pd.Grouper (), работает в jupyter, но выдает ошибки при запуске из SublimeText3 - PullRequest
0 голосов
/ 30 октября 2019

Все,

У меня есть DataFrame, в котором хранятся необработанные транзакционные данные, которые я хотел бы сгруппировать, чтобы использовать для создания отчетов с использованием метода .plot (). Я решил использовать объекты панды Grouper для достижения этой цели. Тем не менее, он выдает ошибку с пандами

TypeError: Действителен только с DatetimeIndex, TimedeltaIndex или PeriodIndex, но получил экземпляр 'Index'

Это частьприложение большего размера, поэтому я извлек его в блокнот Jupyter для отладки. Однако при работе в Jupyter та же группа работает безупречно.

Код Jupyter (Макет данных):

import pandas as pd
from datetime import datetime, timedelta
from decimal import Decimal

entries_df = pd.DataFrame()

entry1 = pd.DataFrame({
    "date_stamp": [datetime.today()],
    "transaction_type": ["APPLY_INCOME"],
    "from": [''],
    "to": [''],
    "amount": [Decimal(1000.00)],
    "spent_category": [''],
    "comment": ["NA"],
    "account": ["SUB1"]
})

entry2 = pd.DataFrame({
    "date_stamp": [datetime.today()],
    "transaction_type": ["APPLY_PAYMENT"],
    "from": ['x'],
    "to": [''],
    "amount": [Decimal(50.00)],
    "spent_category": ["MYCAT1"],
    "comment": ["NA"],
    "account": ["SUB1"]
})

entry3 = pd.DataFrame({
    "date_stamp": [datetime.today() - timedelta(days = 30)],
    "transaction_type": ["APPLY_PAYMENT"],
    "from": ['y'],
    "to": ['z'],
    "amount": [Decimal(1000.00)],
    "spent_category": ["MYCAT1"],
    "comment": ["NA"],
    "account": ["SUB1"]
})



entries_df = entries_df.append(entry1)
entries_df = entries_df.append(entry2)
entries_df = entries_df.append(entry3)

entries_df.head()

Код Jupyter (Группировка по):

payments = entries_df[entries_df["transaction_type"] == "APPLY_PAYMENT"].groupby([
    pd.Grouper(key = 'date_stamp', freq='M')
    , pd.Grouper(key = 'spent_category')
])['amount'].sum()

payments

Примечание: я заменил значение имени перечисленияс текстом «APPLY_PAYMENT» здесь для простоты использования в Jupyter, но он идентичен, кроме этого

Вывод DataFrame (платежей) в Jybyter для groupby () - это то, что я хотел бы получить из приложения:

date_stamp  spent_category
2019-09-30  MYCAT1            1000
2019-10-31  MYCAT1              50
Name: amount, dtype: object

Я в недоумении, почему это будет работать в Jupyter, но не в SublimeText3 или из строки cmd. Работает на Windows10, если применимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...