我有一个类似这样的文本文件:
@ some comment
@ some comment
@ [...]
@ some comment
* NAME S BX BY
bla foo bar foo
"ACF" 1 2 3
"BGB" 4 5 6
"CSD" 7 8 9
我使用下面的代码读入文件。自动检测标题似乎是不可能的,因为第一个字段* NAME
在其名称中包含列分隔符。
import pandas as pd
df=pd.read_csv('test.txt',sep="\s+|\t+|\s+\t+|\t+\s+",names=["Name","S","BX","BY"],skiprows=4)
1.如何自动检测标题名称?
1.如何删除标题下的注解和bla...
行?
3条答案
按热度按时间ffscu2ro1#
对于您的 * 特定 * 示例,您可以这样做:
它使用多个空格的分隔符(适用于头部和大部分数据)或前面带双引号的空格(适用于
"ABC"
值)。由于
bla foo bar foo
行在使用该分隔符时只有一个值,因此我们可以使用dropna
删除它。示例输入的输出:
zbdgwd5y2#
要自动检测头名称并清除不必要的行,可以逐行分析文件,确定所需的行,然后创建DataFrame
最终输出
ve7v8dk23#
另一种解决方案-获取所有以
*
或"
开头的行,然后使用pd.read_csv
:图纸: