Pandas使用join拼接DataFrame报Series无join属性错误如何修复
错误原因
- 核心触发报错的原因:新增键时你直接将
Series类型的values存入字典,后续同名键调用join方法时,Series类本身没有join方法(仅DataFrame提供该方法),就抛出了属性不存在的错误。 - 其他隐藏问题:
join方法不会原地修改原DataFrame,必须接收返回值才能拿到拼接后的结果- 提取的
values索引是原始CSV的行号,和字典内DataFrame的M1/M2/M3索引不匹配,直接拼接会出现空值 - 使用Python内置关键字
dict作为变量名,会覆盖内置字典类的默认功能,属于不规范写法
修复代码
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:重置索引匹配基准索引,转为DataFrame并指定唯一列名 batch_id = batch_df.loc[i, 'ID'] values = pd.DataFrame( batch_df['Value'].values, index=['M1','M2','M3'], columns=[f"Value_{batch_id}"] ) if name in df_dict: # 接收join返回的新DataFrame更新字典 df_dict[name] = df_dict[name].join(values) else: # 首次存入直接存处理好的DataFrame df_dict[name] = values
结果验证
运行后查看K1对应的数据示例:
print(df_dict['K1'])
输出:
Value Value_0 Value_2 M1 0 10 2 M2 0 5 2 M3 0 10 2
内容的提问来源于stack exchange,提问作者mahmood
相关产品推荐
相关产品推荐

