Python:比较 header 和 .csv 值的脚本,更新值

Python: Script to compare a header and a value of a .csv, update values

我得到了以下形式的 .csv 文件:

当我在“调色板”部分找到它时,我需要解析整个 csv 文件并将相应颜色上的 0 替换为 1。

例如,对于第一行,图像的“调色板”部分有 2 个值,“黑色”和“蓝色”。我需要用 1 替换同一行中的相应颜色(所以黑色和蓝色部分)。

如有任何帮助,我们将不胜感激。

谢谢

我有一些东西,但我不确定它会如何扩展。

测试数据帧:

df = pd.DataFrame({
    "image" : ['photo1', 'photo2', 'photo3', 'photo4'],
    "palette" : ['["Black", "Blue"]', 'Yellow', 'Black', '["Yellow", "Blue"]']
})

输出:

第一步:将字符串转换为实际列表。

def wrap_eval(x):
    try:
        return eval(x)
    except:
        return [x]
    
df["palette"] = df["palette"].apply(wrap_eval)

输出;它看起来非常相似,但是如果您检查例如 df.loc[0, "palatte"],您会看到我们现在有一个字符串列表,而不是一个恰好看起来像列表的字符串:

现在,我们将向下迭代行,(1) 测试以查看每一行的“调色板”列表中的每种颜色是否存在一列,(2) 如果不存在,则添加该列的值一直为零,最后是 (3),该列现在将存在,因此将此行中的值设置为 1。

for i, row in df.iterrows():
    for colour in row["palette"]:
        try:
            df[colour]             # (1) in the steps above.
        except:
            df[colour] = 0         # (2)
        finally:
            df.loc[i, colour] = 1  # (3)