首页 > 解决方案 > 没有像 sep=None 这样的分隔符或如何删除逗号?

问题描述

我正在从 2 个 csv 文件中做笛卡尔积,每个 1 列。结果应该是一个新的 csv,其中 1 列是所有产品。由于默认分隔符是逗号,并且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")

标签: pythonpandasdelimiter

解决方案


由于该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

为了拥有一列,您可以将这两列组合成一个 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

推荐阅读