我有一个由空格分隔的 3 列文本文件,我喜欢将其放入数据框中。 我使用以下构造来执行此操作:
df = pd.read_csv(my_file, sep=' ', skiprows=4, names=('cola','colb','filename') )
效果很好,直到我遇到其中包含空格的文件名。
我在 pd.read_csv 中找不到选项来限制列数并处理最后一个位为 1 列。 我如何将这样的文件放入数据框中?
PS 我知道该文件的格式很愚蠢,但这超出了我的控制范围
可以使用
delim_whitespace=True
将空格视为分隔符,并使用
quotechar='"'
将文件名用引号引起来。
以下是如何操作的:
df = pd.read_csv(my_file, delim_whitespace=True, skiprows=4, names=('cola','colb','filename'), quotechar='"')
解释:
-
delim_whitespace=True
: 这告诉 Pandas 使用任何数量的空格作为分隔符,而不仅仅是单个空格。 -
quotechar='"'
: 这告诉 Pandas 将双引号内的任何内容视为单个列,即使其中包含空格。
示例:
如果的文件
my_file.txt
看起来像这样:
# 这是一些注释行
# ...
1 2 filename without spaces.txt
3 4 "filename with spaces.txt"
那么代码将会创建以下数据框:
cola colb filename
0 1 2 filename without spaces.txt
1 3 4 filename with spaces.txt
注意:
- 确保文件名中的空格确实用双引号引起来。如果并非所有文件名都被引起来,则可能需要先预处理文件。
-
如果的文件名中包含双引号字符,则需要选择其他
quotechar
或使用其他方法来处理这些情况。