我正在从2个csv文件中每1列进行笛卡尔乘积运算。结果应为带有1列的所有csv的新csv。由于默认的分隔符是逗号,并且不允许使用sep=None
或类似字符,因此如何将乘积放在一栏中而没有任何逗号?首先,我认为导入的文件00
将具有定界符,但对于replace
和delim_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")
由于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