使用熊猫在csv中用空字符串(“,”)替换空格(“,”)

时间:2018-08-10 23:39:32

标签: python pandas csv etl

我有一个大型的csv,其中的空白值为空值(例如“”)。对于在postgres中需要做的一些特定于数据类型的工作,我需要将它们全部转换为空字符串(“,”)。

我以为这是一个常见问题解答,但是我似乎找不到在熊猫人中这样做的另一个例子。

我猜我需要遍历csv并将“,”的每个实例替换为“,”。

这是两行的示例。您会看到空单元格是空格:

11111.00130.00000,12,NAME NAME T YES,2017,0,1477.51,1477.51, ,444 ALPHABET AVE,COLUMBUS,AL,12345-4544,RESIDENTIAL,10/1/2017, ,N,Y,ROBERTS,BLOCK 1,LOTS 19-20, , , ,1/1/1900, , ,479.29,159.95,327.14,104.27,406.86,0,0,0,0
11111.00130.00000,12,NAME NAME T YES,2016,0,1411.59,1411.59, ,333 ALPHABET AVE,COLUMBUS,AL,12345-4544,RESIDENTIAL,10/1/2016, ,N,Y,ROBERTS,BLOCK 1,LOTS 19-20, , , ,1/1/1900, , ,479.29,158.58,312.6,72.95,388.17,0,0,0,0

2 个答案:

答案 0 :(得分:0)

熊猫具有fillna功能。  df.fillna("")

这不能解决您想要的吗?

答案 1 :(得分:0)

基本上,@ RafaelC的注释可以为您提供帮助,只需增加一些注意即可形成完整的代码FYI。

csv = pd.read_csv('old.csv', header=-1)
# print(len(csv[7][0])) # if uncomment the output: 1
csv.replace(' ', '', inplace=True)
# print(len(csv[7][0])) # if uncomment the output: 0
csv.to_csv('new.csv', header=0)

这里,在读取csv时,需要让pandas自动为您生成列名(header=-1),否则,第一行数据将被设置为列名。然后,替换将不会在第一行生效。

在编写csv时(如果需要),需要忽略列名(header=0),因此不会将自动生成的列名写入新的csv,您可以检查新的csv以查看效果