Python 在元数据之后检测CSV的开始
我正在使用HDT Jena收集数据,并将其存储在Python 在元数据之后检测CSV的开始,python,pandas,dataframe,csv,Python,Pandas,Dataframe,Csv,我正在使用HDT Jena收集数据,并将其存储在csv文件中以供进一步使用。不幸的是,元数据被添加到文件的开头和结尾。 目标:检测元数据的结束位置和标头的位置,以便在数据帧中读取(使用熊猫)。 第一次尝试并发现问题:首先,我注意到它总是以字符串[INFO]开头。 我最初的解决办法是: def find_beginning(csv_file): textfile = open(csv_file) f = textfile.readlines() for num, line
csv
文件中以供进一步使用。不幸的是,元数据被添加到文件的开头和结尾。目标:检测元数据的结束位置和标头的位置,以便在数据帧中读取(使用熊猫)。
第一次尝试并发现问题:首先,我注意到它总是以字符串
[INFO]
开头。
我最初的解决办法是:
def find_beginning(csv_file):
textfile = open(csv_file)
f = textfile.readlines()
for num, line in enumerate(f):
if '[INFO]' in line:
continue
else:
return num
这会给我文件的开头,我会读到:
df = pd.read_csv(csv_file, skiprows=range(0, find_beginning(csv_file)))
- 但是,在某些例外情况下第一行可能不一定以
开头,如下示例所示:[INFO]
- 此外,我正在处理许多文件,这些文件在dataframe中具有不同的标题和不同的行/列数或元素数(因此排除了查找标题或以每行元素数为标准的正则表达式的选项)
- 我还排除了在行中查找逗号的选项,作为查找csv的一部分的行的标准,因为我不知道逗号现在是否会出现在元数据中的某个位置
有没有其他方法可以找到标题,我没有想到?只是一些想法。这些都是“肮脏”的方式:
(default cli)@hdt jena
这样的“default header end line”,但要在这方面提供帮助,您必须提供更多数据0 col1 col2 col3
1 1 4.4 99
2 2 4.5 200
3 3 4.7 65
4 4 3.2 140
如果这些都没有帮助,您需要提供更多数据我不确定是否有其他方法可以做到这一点。一种方法是尝试使用标题格式。例如,标题可能有逗号,而其他行没有。这样可以避免为每个例外情况显式编写。感谢您的建议。我目前有我有一个类似的肮脏的解决方案。我可能会添加一些你写的东西,只是为了避免遇到更多我还没有意识到的异常。
0 col1 col2 col3
1 1 4.4 99
2 2 4.5 200
3 3 4.7 65
4 4 3.2 140