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)
我得到了以下形式的 .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)