如何在pandas中读取使用分号作为分隔符的文件

51

我正在使用Pandas在Python中导入一个.csv文件。

这是.csv文件的格式:

a1;b1;c1;d1;e1;...
a2;b2;c2;d2;e2;...   
.....

这是我获取它的方法:

from pandas import *
csv_path = "C:...."
data = read_csv(csv_path)
现在当我打印文件时,我得到了这个:
0  a1;b1;c1;d1;e1;...
1  a2;b2;c2;d2;e2;...   

等等...因此我需要帮助来读取文件并使用分号字符;将值拆分成列。

2个回答

107

read_csv函数接受一个sep参数,你可以像这样传递sep=';'

data = read_csv(csv_path, sep=';')
在你的情况下失败的原因是默认值为',',因此所有列都被压缩成单个列条目。

1
有没有一种编程方式可以自动判断CSV文件是用,还是;分隔的? - Morris
@Morris:如果你的意思是让pandas推断使用哪个分隔符,你可以通过传递sep=None来告诉它。Pandas使用Python标准库csv.Sniffer来完成这个任务。 - Håken Lid

7

回应Morris上面的问题:

"有没有办法在程序中判断CSV文件是用逗号还是分号分隔的?"

下面是答案:

import pandas as pd

df_comma = pd.read_csv(your_csv_file_path, nrows=1,sep=",")
df_semi = pd.read_csv(your_csv_file_path, nrows=1, sep=";")
if df_comma.shape[1]>df_semi.shape[1]:
    print("comma delimited")
else:
    print("semicolon delimited")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接