去除重复分隔符 Pandas

4

我正在从Excel表格中读取以下列:

CM              FOTO 1              FOTO 2              FOTO 3              FOTO 4           
some text some  744905_L050_01.jpg  NaN                 744905_B001_01.jpg  NaN
some text some  NaN                 NaN                 NaN                 NaN
some text some  621059_W034_01.jpg  621059_W034_02.jpg  621059_W034_03.jpg  NaN     
some text some  NaN                 NaN                 NaN                 NaN

然后我正在编写一个新的csv文件,并创建以下列:

df_["DESCRIPTION"] = df["CM "]
df_["IMAGES_URL"] = df[["FOTO 1 ", "FOTO 2 ", "FOTO 3 ", "FOTO 4 "]].apply(lambda x: x.str.cat(sep='|'), axis=1)
df_["WAREHOUSE"] = "D"

最后,我将它存储在一个CSV文件中,并使用分号作为分隔符:

df_.to_csv('path/my_file.csv', encoding = 'utf-8', index=False, sep=';')

输出如下:

DESCRIPTION;IMAGES_URL;WAREHOUSE
some text some;744905_L050_01.jpg|744905_B001_01.jpg;D
some text some;;D
some text some;621059_W034_01.jpg|621059_W034_02.jpg|621059_W034_03.jpg;D
some text some;;D

然而,如果所有四个Foto列都有NaN值,则在csv文件中会写入双倍的;;。我该如何删除双分号并将其替换为一个分号?

在数据框中没有foto的地方,你使用了“双分号”。问题应该就在那里得到解决。 - DYZ
我该怎么解决这个问题?我已经尝试用";"替换";;",但是没有成功。 - tara
2
你的CSV文件中有一个“;;”(空列),因为缺少值。每行CSV文件中必须有相同数量的列。这是不可谈判的。你不能得到你想要的 - 而且你为什么要它呢? - DYZ
1个回答

1
如果你人为地用";"替换了";;",那么来自Foto 3的数据将进入Foto 2列。这真的是你想要的吗?如果不是,你可以使用以下方法用其他内容填充NaN值:
df_.fillna('No foto', inplace=True)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接