Все,
У меня есть 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, если применимо.