我有一个.csv文件,标题中有4行。其中一个是列名,我已经正确导入了其他数据。
标题中的一行告诉我带有起始值,停止值和步长的索引值。我无法弄清楚如何读取该信息并将其转换为数据帧的索引值。
标题如下所示:
Title
date time
index_start value, index_stop value, index_step, #, units
col1, col2, col3, col4
data, data, data, data
data, data ,data ,data
..., ..., ..., ..
答案 0 :(得分:0)
您可以读取文件以获取索引值,然后使用header
中的pd.DataFrame.from_csv()
参数跳过前几行。最后用几个命令创建一个新索引。
这是一个例子。
假设文件是:
Title
date time
index_start 10, index_stop 30, index_step 10, #, units
col1, col2, col3, col4
1, a, data, data
2, b, data, data
3, c, data, data
第1步:读取文件并获取索引参数。
filename = 'path/to/file'
index_start, index_stop, index_step = None, None, None
with open(filename, 'r') as f:
title = f.readline().strip() # read first line for title
date, time = f.readline().strip().split() # split line 2 on whitespace
# first read line 3 and split on commas
index_start, index_stop, index_step, _, _ = f.readline().strip().split(',')
# split on whitespace and convert to int
index_start = int(index_start.split()[1])
index_stop = int(index_stop.split()[1])
index_step = int(index_step.split()[1])
这适用于我的示例文件,但由于您的问题不清楚,因此必须针对您的特定文件格式修改这些命令。
>>> print(index_start, index_stop, index_step)
(10, 30, 10)
第2步:将文件读入数据框,跳过前3行。
df = pd.DataFrame.from_csv(filename, header=3, index_col=None)
第3步:将您的索引创建为新列,然后使用set_index()
将其设为索引。
df = pd.DataFrame.from_csv(filename, header=3, index_col=None)
df['new_index'] = range(index_start, index_stop+index_step, index_step)
df = df.set_index('new_index')
df.index.name = None
最终输出:
col1 col2 col3 col4
10 1 a data data
20 2 b data data
30 3 c data data