AttributeError: 'int' object has no attribute 'items' 混合数据存储

发布时间 2023-09-12 16:47:38作者: 徐俊112
data = {
'2023:09:01': {'867726032728067': 68},
'2023:09:02': {'867726032728067': 68},
'2023:09:03': 0,
'2023:09:04': {'866384064965578': 48, '867266067918648': 46},

}
本想着把这组数据通过 pandas 模块保存成excel表格
保存格式:
1.2列
2.第一列为日期('2023:09:01'),第二列为({'867726032728067': 68})
import pandas as pd

# 给定数据
data = {
    '2023:09:01': {'867726032728067': 68},
    '2023:09:02': {'867726032728067': 68},
    '2023:09:03': 0,
    '2023:09:04': {'866384064965578': 48, '867266067918648': 46},

}

df = pd.DataFrame.from_dict(data, orient='index')
print(df)
df.columns = ['报警次数30次以上']  # 设置列标题为 '数量'
# 将 DataFrame 保存为 Excel 文件
df.to_excel('data.xlsx', index_label='日期')  # 设置索引列标题为 '日期'

结果报错:

解决办法: 把你的value  {'867726032728067': 68} 转成str

原因:因为你的value是字典形式,pandas模块 会继续解析你的value , 不是把他当作一个值存储到 DataFrame 数据框架中 

遇见混合数据存储时,把value 全部转化为str的形式特别的字典和元组

 

还为解决的问题:(自己猜想)

如果混合数据的第一个value不是可迭代的(字典,元组,列表),那么剩下的数据也不会解析,直接当作一个value来存储

那上面的数据来举例:就把第一个value数据换成 :0

import pandas as pd

# 给定数据
data = {
    '2023:09:01': 0,
    '2023:09:02': {'867726032728067': 68},
    '2023:09:03': 0,
    '2023:09:04': {'866384064965578': 48, '867266067918648': 46},

}

df = pd.DataFrame.from_dict(data, orient='index')
print(df)
df.columns = ['报警次数30次以上']  # 设置列标题为 '数量'

# 将 DataFrame 保存为 Excel 文件
df.to_excel('data.xlsx', index_label='日期')  # 设置索引列标题为 '日期'
print('ok')