python - 没有像 sep=None 这样的分隔符或如何删除逗号?
问题描述
我正在从 2 个 csv 文件中做笛卡尔积,每个 1 列。结果应该是一个新的 csv,其中 1 列是所有产品。由于默认分隔符是逗号,并且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
为了拥有一列,您可以将这两列组合成一个 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
推荐阅读
- android - 有什么方法可以自定义 Accessibility 重点节点上的 Talkback 突出显示的矩形?
- rabbitmq - 如何从客户端重试 Rabbit MQ 中的消息?
- angular - 配置 Angular 以将 .mrt 文件作为 XML 读取,以修复错误“Unexpected token < in JSON”
- swift - 如何删除文本框边框
- android - 使用 FileProvider 发送带附件的电子邮件
- ews-javascript-api - ews-javascript-api 可以在标准 Web 应用程序中使用并通过 Chrome 访问吗?
- c++ - 为什么混合 -fexceptions 和 -fno-exceptions 没有链接器警告
- keras - 为卷积神经网络 (Keras) 重塑二维数据
- angular - (Angular 6)FullCalendar 未正确加载
- excel - 文件已关闭时自动运行 Excel VBA