You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

合并字典生成Pandas DataFrame时季度值显示NaN的修复请求

修复合并字典生成DataFrame时季度值显示NaN的问题

问题:合并多个字典创建新DataFrame时,字典中的季度数值(如[1,0,0,0])未正常显示,而是出现NaN,需要修复代码,生成包含qrt_1、qrt_2、qrt_3、qrt_4、year、Sales列的DataFrame。

原代码:

import pandas as pd

qrt_1 = {'q1':[1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]}
qrt_2 = {'q2':[0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0]}
qrt_3 = {'q3':[0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]}
qrt_4 = {'q4':[0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1]}
year =  {'year': [1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9]}
# 假设data_1是已存在的包含Sales列的DataFrame
value = data_1['Sales']

data = [year, qrt_1, qrt_2, qrt_3, qrt_4]

dataframes = []
for x in data:
    dataframes.append(pd.DataFrame(x))

df = pd.concat(dataframes)

问题原因

原代码使用pd.concat()时默认按行拼接(axis=0),每个字典生成的DataFrame只有一列,拼接后其他列自然填充NaN。另外原字典的键是q1/q2等,不符合需求的qrt_1/qrt_2列名。

修复后的代码

import pandas as pd

# 定义各季度字典,直接使用目标列名
qrt_1 = {'qrt_1':[1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0]}
qrt_2 = {'qrt_2':[0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0]}
qrt_3 = {'qrt_3':[0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0]}
qrt_4 = {'qrt_4':[0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1]}
year =  {'year': [1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9]}

# 将所有字典转为DataFrame后按列拼接
df = pd.concat([pd.DataFrame(d) for d in [year, qrt_1, qrt_2, qrt_3, qrt_4]], axis=1)
# 添加Sales列
df['Sales'] = data_1['Sales']

说明

  1. 直接修改字典的键为目标列名qrt_1/qrt_2等,避免后续重命名操作
  2. 使用pd.concat(..., axis=1)按列拼接,保证所有列对齐显示
  3. 最后添加Sales列,需确保data_1['Sales']的长度为36,和其他列表行数一致

内容的提问来源于stack exchange,提问作者itsnotbubs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 14:30:45