python-3.x - 无法将 numpy dtypes 转换为其本机 python 类型(int64 到 int)
问题描述
请检查下面的代码,我想将 dtype int64 转换为其本机 python 类型 int。
dfCredit = pd.DataFrame(credits_List)
dfCredit['date'] = pd.to_datetime(dfCredit['date'], format='%d-%m-%Y')
sum_Credit_Bal = dfCredit.groupby(pd.Grouper(key='date', freq='1M')).sum()
avg_Credit_Bal = dfCredit.groupby(pd.Grouper(key='date', freq='1M')).mean()
avg_Credit_Bal['No. of transactions'] = sum_Credit_Bal['No. of transactions'].astype(int)
print("--------------")
print("\nAverage amount Credited per month :\n\n ", avg_Credit_Bal)
print("--------------")
print(avg_Credit_Bal.dtypes)
js = [{"Average amount Credited per month": avg_Credit_Bal.to_dict()}]
s3object = s3.Object("bank-statement-demo","BankOutput.json")
s3object.put(Body=(bytes(json.dumps(js).encode('UTF-8'))))
我试图在 amazon lambda 服务中运行我的代码,但出现以下错误
'TypeError:'int64' 类型的对象不是 JSON 可序列化的'。这就是为什么我需要将它转换成它的原生 python 类型
输出
Average amount Credited per month :
Credit No. of transactions
Month
Jun-18 4644.500000 4
Jul-18 11142.000000 2
Aug-18 12148.750000 4
Sep-18 2830.477143 7
Oct-18 4664.250000 4
Nov-18 8381.500000 2
--------------
Credit float64
No. of transactions int64
dtype: object
预期答案
No. of transactions int
解决方案
因此,Amazon s3 似乎对 dtypes 有点敏感,因此为了使其兼容,您可以先转换为int
然后再转换为object
兼容:
avg_Credit_Bal['No. of transactions'] = sum_Credit_Bal['No. of transactions'].astype(int).astype(object)
如果您查看元素的类型,它将输出object
指示它是通用 python 对象:
type(avg_Credit_Bal['No. of transactions'][0])
将输出object
推荐阅读
- c++ - 我应该使用什么来代替 void 作为变体中的替代类型之一?
- r - r - arrange values in a dataframe, within a group, based on a variable, in ascending or descending order
- node.js - Rfc2898DeriveBytes to crypto.pbkdf2
- encryption - 如何在 exoplayer2 中播放加密的破折号块
- python - add keys and values to a dictionary from multiple objects by for loop
- java - 解决Java路径的安全方法
- css - How to make flexbox child not create horizontal scrolling
- c# - Cannot implicitly convert type object to string in PrivateObject in C#
- python - Python非阻塞SSL套接字解包:如何检测关闭握手的完成?
- kubernetes - 在 Kubernetes 中安装稳定的 RabbitMQ 时获取 MountVolume.SetUp 失败