我的代码从Excel中获取银行对账单并创建一个数据框架,该数据框架根据描述对每个交易进行分类:
import pandas as pd
import openpyxl
import datetime as dt
import numpy as np
dff = pd.DataFrame({'Date': ['20221003', '20221005'],
'Tran Type': ['BOOK TRANSFER CREDIT', 'ACH DEBIT'],
'Debit Amount': [0.00, -220000.00],
'Credit Amount': [182.90, 0.0],
'Description': ['BOOK TRANSFER CREDIT FROM ACCOUNT 98743987', 'USREF2548 ACH OFFSET'],
'Amount': [-220000.00, 182.90]})
import re
dff['Category'] = dff['Description'].str.findall('Ref|BCA|Fund|Transfer', flags=re.IGNORECASE)
但是这个代码不能工作。知道为什么吗?
pivotf = dff
pivotf = pd.pivot_table(pivotf,
index=["Date"], columns="Category",
values=['Amount'],
margins=False, margins_name="Total")
错误信息是TypeError: unhashable type: 'list'
当我从"Category"对于其他任何东西,它工作得很好。
谢谢!
在执行(未测试)之前添加以下行:
import numpy as np
dff['category'] = [x[0] if not x.isempty() else np.nan for x in dff['category']]
这将确保你的类别不是一个列表(它不能被散列)。