Pandas横向拼接DataFrame出现NaN值该如何修复
问题原因
横向拼接时pandas会默认按行索引对齐数据,你两次提取的K1批次Value列的行索引分别是[0,1,2]和[6,7,8],索引无法匹配的位置就会被填充为NaN。
修改方案
只需要在提取批次Value列时重置索引,丢弃全局行号,保证每个3行批次的索引统一为[0,1,2]即可。另外建议不要使用dict作为变量名,避免覆盖Python内置的字典类型。
修改后的完整代码如下:
import pandas as pd # 创建初始字典 data = {'Value':[0,0,0]} kernel_df = pd.DataFrame(data, index=['M1','M2','M3']) df_dict = {'dummy':kernel_df} df = pd.read_csv('test.batch.csv') for i in range(0, len(df), 3): batch_df = df.iloc[i:i+3] name = batch_df.loc[i].at["Name"] # 关键修改:重置索引,去掉原有全局行号 values = batch_df.loc[:,["Value"]].reset_index(drop=True) if name in df_dict: df_dict[name] = pd.concat([df_dict[name], values], axis=1) else: df_dict[name] = values
运行后得到的字典结果和你期望的完全一致。
内容的提问来源于stack exchange,提问作者mahmood
相关产品推荐
相关产品推荐

