Pandas Python:从中间注释中获取列名

Pandas Python:从中间注释中获取列名,pandas,Pandas,类似于这个帖子 如何仅使用pandas获取注释之间的列名 File.csv: #Comment1 #Col1|Col2|Col3 #Comment2 data1|data2|data3 我可以做一些预处理,但这可以只用熊猫吗 使用pd.read_csv('file.csv',sep='|')+任何其他参数 我的预期产出是: Col1 Col2 Col3 1: data1 data2 data3 不知何故,我尝试使用headers=1将#comments2留在数据框中,但它将我的列的数

类似于这个帖子

如何仅使用pandas获取注释之间的列名

File.csv:

#Comment1
#Col1|Col2|Col3
#Comment2 
data1|data2|data3
我可以做一些预处理,但这可以只用熊猫吗

使用
pd.read_csv('file.csv',sep='|')
+任何其他参数

我的预期产出是:

   Col1 Col2 Col3
1: data1 data2 data3
不知何故,我尝试使用
headers=1将
#comments2
留在数据框中,但它将我的列的数据类型更改为字符串。然后对数据帧进行一些操作(检查行中有一个字符串并将其删除)并将其转换回float会为我的原始数据添加值(即1.0005->1.0005xxxxx)。与使用预处理从注释中收集列名并向数据框实例添加
names=col\u name
comments='#'
相比,确定我的实验非常麻烦。

尝试以下操作:

import pandas as pd
lines = []
with open('file.csv', 'r') as file:
    for line in file:
        if line[0] == '#':
            continue
        lines.append(line))
split_lines = ['|'.split(line) for line in lines]
df = pd.DataFrame([{'Col1' : split_lines[0], 'Col2' : split_lines[1], 'Col3' : split_lines[2]}])
试试这个:

import pandas as pd
lines = []
with open('file.csv', 'r') as file:
    for line in file:
        if line[0] == '#':
            continue
        lines.append(line))
split_lines = ['|'.split(line) for line in lines]
df = pd.DataFrame([{'Col1' : split_lines[0], 'Col2' : split_lines[1], 'Col3' : split_lines[2]}])

您读取文件两次:一次读取标题,一次读取数据

headers = pd.read_csv(path, sep='|', skiprows=1, nrows=0).columns.str.strip('#')
df = pd.read_csv(path, sep='|', skiprows=3, header=None, names=headers)

您读取文件两次:一次读取标题,一次读取数据

headers = pd.read_csv(path, sep='|', skiprows=1, nrows=0).columns.str.strip('#')
df = pd.read_csv(path, sep='|', skiprows=3, header=None, names=headers)

请显示您的预期输出请同时显示您的输入…这是您正在显示的数据帧吗?更新了我的帖子。我可以实现我预期的输出,但我必须做一些预处理,从评论中获取标题。如果使用
header=2
,则
#comment2
仍将在数据帧中编码。添加
comments='#'
将删除注释,而不读取标题行。请显示预期输出请同时显示输入…这是您显示的数据框吗?更新了我的帖子。我可以实现我预期的输出,但我必须做一些预处理,从评论中获取标题。如果使用
header=2
,则
#comment2
仍将在数据帧中编码。添加
comments='#'
将删除注释,而不读取标题行。这就是我的预处理过程。首先读取文件以从注释中获取列名,然后在构建数据帧时插入列表。这就是我的预处理过程。首先读取文件以从注释中获取列名,然后在构建数据帧时插入列表。我尝试了此操作,但我已指定了
UserWarning:replicate names。这将在将来引发错误。return _read(filepath_或_buffer,kwds)
打印数据框:
空数据框列:[Col1,Col2,Col3]索引:[]
它完成了任务,但我似乎找不到这些重复项以及可能在将来导致错误的警告。我尝试了这一操作,但指定了
UserWarning:重复名称。这将在将来引发错误。return _read(filepath_或_buffer,kwds)
打印数据帧:
空数据帧列:[Col1,Col2,Col3]索引:[
它完成了任务,但我似乎找不到这些重复项是什么,以及将来可能导致我出错的警告。