【问题标题】:Assign images to the elements of a pandas dataframe in Python在 Python 中将图像分配给熊猫数据框的元素
【发布时间】:2020-12-22 08:10:05
【问题描述】:

我有一个 pandas 数据框,其中一列是图像(numpy 数组格式的单通道 uint8 2d 图像)。 我正在使用 iterrows() 遍历行,并处理图像,我想将结果(其他图像,格式相同)分配给数据框其他列的元素。我有一个图片专栏。

for index,row in df.iterrows():
    image=df['image']
    processed=process_image(image)
    df.loc[index,'processed_image']=processed

但是,当我尝试使用 .loc 或 .at(或 .iloc、.iat)时,会遇到这样的错误(对于 .loc 和 .at):

ValueError:无法使用长度与值不同的多索引选择索引器进行设置 ValueError: 使用序列设置数组元素。

可能 loc 和 at 期望单个值,他们期望数组用于填充 pandas 数据帧的多个索引。但我不希望这样,我希望将数组作为单个元素。

我在互联网上的其他地方找不到确切的 questino。我发现的最接近的是已经手动使用数组元素初始化数据框,而不是在 iterrows 中分配。

有人知道怎么解决吗?提前致谢。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    尝试通过 .apply() 方法将新列添加为现有列的函数,例如

    df['new_col'] = df.apply(lambda row: ..., axis=1)
    

    【讨论】:

    • 这似乎行得通。但是,我有数千行,处理时间很长,并且在每次迭代中我都想保存结果(整个更新的数据帧)。这就是为什么我想在 iterrows 中做这件事。如果我在 lambda 函数调用的函数内部保存到文件,它会像我希望的那样为每一行保存更新的数据帧吗?
    • 就我个人而言,我会进行分布式图像处理,将图像输入和结果存储为文件以及 DF 中的文件名如何,而不是在 pandas 中进行图像处理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-27
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    相关资源
    最近更新 更多