如何将 int32 类型转换为 int,因为它不是 JSON 可序列化的

Posted

技术标签:

【中文标题】如何将 int32 类型转换为 int,因为它不是 JSON 可序列化的【英文标题】:How do I convert type int32 to int as it's not JSON serializable 【发布时间】:2019-10-22 00:01:28 【问题描述】:

我目前有一个包含这种格式信息的 pandas DataFrame:

      date  new builds  new houses  new homes  help to buy  
0   2014-06-08       5          29         79           11   
1   2014-06-15       5          30         79           11   
2   2014-06-22       6          31         82           12   
3   2014-06-29       5          31         82           12   
4   2014-07-06       5          33         86           12   
5   2014-07-13       5          33         88           13   
6   2014-07-20       5          33         87           12   
7   2014-07-27       5          33         86           13   
8   2014-08-03       5          32         86           13   
9   2014-08-10       6          31         83           12   
10  2014-08-17       5          30         86           11   

我正在尝试通过 gspread 包并使用 sheet.update_cell 函数将这些信息解析到 Google 表格中,但我不断收到错误

int32 类型的对象不是 JSON 可序列化的

我能找到的该数据类型的唯一引用是 Dataframe 中的值。

我尝试过df['new builds'].astype(int),但这只是将该列中的数据保留为int32 类型,我也尝试先将其转换为字符串,然后使用df['new builds'].astype(str).astype(int) 键入int,但没有运气。

仅供参考,这是我尝试使用的代码,用于将 DataFrame 中的所有数据推送到工作表中

number_of_columns = len(data.columns)
number_of_rows = data.shape[0]

for i in range(0, len(keyword_list)):
    column_loop = i + 1
    type(column_loop)
    for x in range(number_of_rows):
        row_loop = x + 1
        type(row_loop)
        sheet.update_cell(column_loop, row_loop, data.loc[x,keyword_list[i]])

【问题讨论】:

【参考方案1】:

尝试int(data.loc[x, keyword_list[i]]) 而不是data.loc[x, keyword_list[i]]


np.int32 不是 JSON 可序列化的,但 python int 是,您只需将 np.int32 转换为 python int

【讨论】:

以上是关于如何将 int32 类型转换为 int,因为它不是 JSON 可序列化的的主要内容,如果未能解决你的问题,请参考以下文章

C# int & int32 声明 [重复]

C语言如何将int类型转换成字符串

转换为值类型“Int32”失败,因为具体化值为 null

如何快速将 Int 转换为 int?

c#中的textbox输入数值如何运算?

如何在数字反序列化中更改默认类型