python - usecols 与 parse_dates 和名称

标签 python pandas

我正在尝试加载包含以下格式的 OHLC 数据的 csv 文件。

In [49]: !head '500008.csv'
03 Jan 2000,12.85,13.11,12.74,13.11,976500,,,,
04 Jan 2000,13.54,13.60,12.56,13.33,2493000,,,,
05 Jan 2000,12.68,13.34,12.37,12.68,1680000,,,,
06 Jan 2000,12.60,13.30,12.27,12.34,2800500,,,,
07 Jan 2000,12.53,12.70,11.82,12.57,2763000,,,,
10 Jan 2000,13.58,13.58,13.58,13.58,13500,,,,
11 Jan 2000,14.66,14.66,13.40,13.47,1694220,,,,
12 Jan 2000,13.66,13.99,13.20,13.54,519164,,,,
13 Jan 2000,13.67,13.87,13.54,13.80,278400,,,,
14 Jan 2000,13.84,13.99,13.30,13.50,718814,,,,

我尝试了以下加载数据的方法。

df = read_csv('500008.csv', parse_dates=[0,1,2], usecols=range(6), 
                            header=None, index_col=0)

但现在我想命名要命名的列。所以,我尝试了,

df = read_csv('500008.csv', parse_dates=[0,1,2], usecols=range(6),
                            header=None, index_col=0, names='d o h l c v'.split())

但这没有说明,

IndexError: list index out of range

有人可以指出我做错了什么吗?

最佳答案

我不知道它是错误还是功能,但您必须为存在的所有列指定名称,即使您仅指定usecols列的子集

df = pd.read_csv(StringIO(raw),
                 parse_dates=True,
                 header=None,
                 index_col=0,
                 usecols=[0,1,2,3,4,5],
                 names='0 1 2 3 4 5 6 7 8 9'.split())

这给出了

                1      2      3      4        5
0                                              
2000-01-03  12.85  13.11  12.74  13.11   976500
2000-01-04  13.54  13.60  12.56  13.33  2493000
2000-01-05  12.68  13.34  12.37  12.68  1680000

我通过尝试边缘情况来解决这个问题,即为 namesusecols 指定完整列表,然后尝试逐渐减少并看看会发生什么。

奇怪的是当您尝试 usecols=[1,2,3]names=['1','2','3 时收到的错误消息']:

ValueError: Passed header names mismatches usecols

这没有意义......

关于python - usecols 与 parse_dates 和名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14297959/

相关文章:

python - 优化 pandas 中运行时的过滤功能

python - 将 Latex 表读入 Pandas DataFrame

python - 合并列并转换为 utc 时区

python - Plpython 程序中的 Greenplum pandas 数据框集成(来自数据库内部)

python - matplotlib 自定义线条颜色和线型循环器

python - 根据该点的值绘制一个非方阵

python - 按条件删除行并填充 pandas 数据框中的新列

python - 列表操作,跟踪旧列表

python - 从另一个多索引 pandas 数据帧在多索引 pandas 数据帧中添加额外条目

python - 使用 asyncio 时无法使用 os.fork() 将多个进程绑定(bind)到一个套接字服务器