如何在pandas中按第一个和最后一个逗号分割CSV数据为三列
实现方法
你可以先将文件按整行读取为单列数据,再通过两次拆分完成列的划分,具体代码如下:
import pandas as pd # 读取原始文件,设置特殊分隔符保证每行完整读入为单列 df = pd.read_csv("your_file.csv", sep="^", header=None, names=["raw_content"]) # 第一次从左往右拆分,取第一个逗号前的内容为Column1,剩下的内容暂存为临时列 df[["Column1", "temp"]] = df["raw_content"].str.split(",", n=1, expand=True) # 第二次从右往左拆分,取最后一个逗号后的内容为Column3,中间剩余内容为Column2 df[["Column2", "Column3"]] = df["temp"].str.rsplit(",", n=1, expand=True) # 去除所有列的前后空白,保留需要的三列 df = df[["Column1", "Column2", "Column3"]].apply(lambda x: x.str.strip())
执行后得到的df就是你需要的结果:
| Column1 | Column2 | Column3 |
|---|---|---|
| 1 | Apple | 1 |
| 2 | Apple, Banana | 2 |
| 3 | Strawberry | 3 |
原理说明
str.split(',', n=1)表示只按从左到右的第一个逗号拆分一次,避免中间的逗号被识别为分隔符str.rsplit(',', n=1)表示从右到左按最后一个逗号拆分一次,刚好提取出最后一列的内容- 该方案兼容中间列包含任意数量逗号的场景,不需要提前知道每行有多少个分隔符
内容的提问来源于stack exchange,提问作者Seeker
相关产品推荐
相关产品推荐

