我正在寻找一个快速的方法来读取一个csv文件到Xplrame.该csv文件是一个空格分隔,然而,列名之间放置双引号,如果它包含一个以上的词&包含多个空格. pd.read_csv与sep=”“不工作,因为colomn名称空格.
我目前通过在文件的每一行上应用shlex.split
来解决这个问题,将其改为逗号分隔。然而,这花费了太长的时间:对于一个15 K行的文件,大约需要6秒。下面是我的文件('template.csv'
)的示例和如何通过shlex.split
解决它的代码片段。
提前感谢帮助!
a b c "d e " "f g " "h k "
1 2 3 4 5 6
2 2 3 4 5 6
3 2 3 4 5 6
4 2 3 4 5 6
5 2 3 4 5 6
6 2 3 4 5 6
字符串
下面是代码和所需的嵌入式框架输出:
import pandas as pd
import shlex
data = []
df = pd.DataFrame()
for line in open(r'template.csv'):
line = shlex.split(line)
data.append(line)
df = pd.DataFrame(data[1:], columns=[colName for colName in data[0]])
a b c d e f g h k
0 1 2 3 4 5 6
1 2 2 3 4 5 6
2 3 2 3 4 5 6
3 4 2 3 4 5 6
4 5 2 3 4 5 6
5 6 2 3 4 5 6
型
3条答案
按热度按时间8qgya5xd1#
您可以设置分隔符:
字符串
也可以使用
shlex
,但只在第一行使用:型
wb1gzix02#
您可以将csv模块与自定义的CSV一起使用,以有效地读取带有引号的列名的空格分隔文件。
字符串
wgeznvg73#
在这种情况下,看起来你可以只使用
delim_whitespace=True
,(它相当于sep="\s+"
,尽管只应该使用其中一个),即任何空格都是分隔符,默认情况下,"
是quotechar,所以:字符串