没有分隔符,例如sep = None或如何删除逗号?

问题描述 投票:0回答:1

我正在从2个csv文件中每1列进行笛卡尔乘积运算。结果应为带有1列的所有csv的新csv。由于默认的分隔符是逗号,并且不允许使用sep=None或类似字符,因此如何将乘积放在一栏中而没有任何逗号?首先,我认为导入的文件00将具有定界符,但对于replacedelim_whitespace=False,我想我确定它不是来自那里(无论如何只是一列)。我还尝试将最终文件的第1列和第2列与笛卡尔乘积合并或合并,但无法弄清楚该怎么做。此外,我用replace(",", "")进行了尝试,但结果没有改变。

这是代码:

import pandas as pd

vornamen = pd.read_csv(...\00.csv",header=None, encoding= 'unicode_escape')
nachnamen = pd.read_csv(...\01.csv",header=None, encoding= 'unicode_escape')

vornamen['_tmp'] = 1
nachnamen['_tmp'] = 1

df = pd.merge(vornamen,nachnamen,on='_tmp').drop('_tmp',axis=1)
df.to_csv(...\03.csv",header=None,index=False, sep="\t")
python pandas delimiter
1个回答
0
投票

由于df.to_csv方法创建了CSV文件,因此它在输出文件中创建的列数与数据框中的列数相同。由于df数据框中有2列,因此pandas会尝试保存2列:

...

>>> df = pd.merge(vornamen,nachnamen,on='_tmp').drop('mp',axis=1)
>>> df
   0_x      0_y
0  Jan     Hart
1  Jan  Johnson
2  Bob     Hart
3  Bob  Johnson

为了只有一列,您可以将这2列组合成一个pandas Series对象,如下所示:

>>> names = (df['0_x'] + ' ' + df['0_y'])
>>> names
0       Jan Hart
1    Jan Johnson
2       Bob Hart
3    Bob Johnson
dtype: object

>>> names.to_csv('names.csv', header=None, index=False)

如果您随后检查names.csv文件,则可以看到它包含2个文件中所有名称的乘积:

➜  ~ cat names.csv
Jan Hart
Jan Johnson
Bob Hart
Bob Johnson
© www.soinside.com 2019 - 2024. All rights reserved.