合并字典生成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']
说明
- 直接修改字典的键为目标列名
qrt_1/qrt_2等,避免后续重命名操作 - 使用
pd.concat(..., axis=1)按列拼接,保证所有列对齐显示 - 最后添加
Sales列,需确保data_1['Sales']的长度为36,和其他列表行数一致
内容的提问来源于stack exchange,提问作者itsnotbubs
相关产品推荐
相关产品推荐

