我正在尝试导入包含多个时间序列的csv文件。
我面临的挑战是:
a)转换了csv文件,因此无法从列中解析日期。通常使用read_csv().T
命令转置文件,但是考虑到日期时间信息,这是不合适的。
b)由于日期时间索引位于标题行上,因此重复的数据点将添加一个数字(即Jan
变为Jan
,Jan.1
,Jan.2
等) ,因此剥离日期时间值变得困难。
c)第一列标题(不包括日期时间信息)放在日期时间数据的最后一行(第三行)上,这会使解析标题变得更加复杂。
是否有一种简单的方法,可以从csv转到“标准”数据帧结构,并从csv和列中的值解析出日期时间索引?
此处提供了csv数据结构的示例:
empty | empty | Jan | Jan | Jan | ... | Dec |
empty | empty | 1 | 1 | 1 | ... | 31 |
head1 | head2 | 00:00 | 01:00 | 02:00 | ... | 23:00 |
---
value1 | value2 | 0.35 | 0.38 | 0.44 | ... | 0.20 |
...
答案 0 :(得分:0)
尝试:
# read csv with no header
df = pd.read_csv('untitled.txt', header=None).T
# create an index by joining all the columns
df['idx'] = [ ' '.join((a,b,c)) for a,b,c in
zip(df[0].fillna(''),
df[1].fillna(''),
df[2].fillna('')) ]
# drop the unnecessary columns
df.drop([0,1,2], axis=1, inplace=True)
# output
df.set_index('idx').T.reset_index(drop=True)
输出:
+----+-----------+-----------+---------------+---------------+---------------+----------------+
| | head1 | head2 | Jan 1 00:00 | Jan 1 01:00 | Jan 1 02:00 | Dec 31 23:00 |
|----+-----------+-----------+---------------+---------------+---------------+----------------|
| 0 | value1 | value2 | 0.35 | 0.38 | 0.44 | 0.2 |
+----+-----------+-----------+---------------+---------------+---------------+----------------+
如上所述,列仍为文本(str
类型)。如果需要,您需要将它们转换回时间戳。