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

DataFrame列表列转对应值列报错:TypeError: 'float' object is not iterable

解决DataFrame从列表列转宽表的报错问题

你的需求是把包含列表的两列(Column A为类别列表,Column B为对应权重列表)转换为宽表,原代码报错TypeError: 'float' object is not iterable,原因及解决方案如下:

错误原因

你代码中的if isinstance(value, list):分支完全多余且逻辑错误。当用zip(row['Column A'], row['Column B'])遍历配对时,value已经是Column B列表中的单个浮点数值(比如0.5、1.0),并非列表。错误进入该分支后,代码尝试迭代float类型的value,导致抛出迭代不可迭代对象的错误。

修正后的原始代码

直接去掉多余的判断分支,按一一对应的关系赋值即可:

import pandas as pd

# 初始化原始DataFrame
data = {
    'Column A': [['Dogs','Cats','Horses'], ['Dogs'], ['Cats','Horses']],
    'Column B': [[0.5,0.25,0.25], [1.0], [0.75,0.25]]
}
df = pd.DataFrame(data)

# 获取所有唯一类别
keys = set(key for row in df['Column A'] for key in row)

# 初始化新列为0.0
for key in keys:
    df[key] = 0.0

# 遍历每一行赋值
for i, row in df.iterrows():
    for key, value in zip(row['Column A'], row['Column B']):
        df.at[i, key] = value

# 删除原列并调整列顺序
df.drop(columns=['Column A', 'Column B'], inplace=True)
df = df[['Dogs', 'Cats', 'Horses']]
print(df)

更高效的Pandas方法(推荐)

避免使用iterrows(大数据量下效率低),可以用以下两种方式:

方法1:用apply转Series

import pandas as pd

data = {
    'Column A': [['Dogs','Cats','Horses'], ['Dogs'], ['Cats','Horses']],
    'Column B': [[0.5,0.25,0.25], [1.0], [0.75,0.25]]
}
df = pd.DataFrame(data)

# 将每行的类别和权重转为Series
def row_to_wide(row):
    return pd.Series(dict(zip(row['Column A'], row['Column B'])))

# 生成结果并填充缺失值为0
result_df = df.apply(row_to_wide, axis=1).fillna(0)
# 调整列顺序
result_df = result_df[['Dogs', 'Cats', 'Horses']]
print(result_df)

方法2:用explode+pivot

import pandas as pd

data = {
    'Column A': [['Dogs','Cats','Horses'], ['Dogs'], ['Cats','Horses']],
    'Column B': [[0.5,0.25,0.25], [1.0], [0.75,0.25]]
}
df = pd.DataFrame(data)

# 拆分列表为多行
df_exploded = df.explode(['Column A', 'Column B'])
# 透视转宽表并填充0
result_df = df_exploded.pivot(columns='Column A', values='Column B').fillna(0).reset_index(drop=True)
# 调整列顺序
result_df = result_df[['Dogs', 'Cats', 'Horses']]
print(result_df)

以上三种方法都能得到你期望的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 14:46:32