首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Datetime索引过滤熊猫csv数据

用Datetime索引过滤熊猫csv数据
EN

Stack Overflow用户
提问于 2022-02-27 18:28:55
回答 2查看 236关注 0票数 0

我的csv看起来是这样的:

我正在读取列表中的多个csv文件,第一列“日期”作为索引,并解析日期:

代码语言:javascript
复制
all_max = []
for f in max_files:
    data_instance = pd.read_csv(os.path.join(max_path, f), index_col=0, parse_dates=['Date'])
    all_max.append(data_instance)

我想在、startdate、enddate的范围内找到记录。

代码语言:javascript
复制
startdate = pd.to_datetime("2010-7-7").date()
enddate = pd.to_datetime("2010-7-15").date()
locs = all_max[0]['Date'].iloc[startdate:enddate]
print(locs)

但是我得到了一个错误

代码语言:javascript
复制
KeyError: 'Date'

The above exception was the direct cause of the following exception:

KeyError                                  Traceback (most recent call last)
<ipython-input-119-580774846bf5> in <module>
      1 startdate = pd.to_datetime("2010-7-7").date()
      2 enddate = pd.to_datetime("2010-7-15").date()
----> 3 locs = all_max[0]['Date'].iloc[startdate:enddate]
      4 print(locs)
EN

回答 2

Stack Overflow用户

发布于 2022-02-27 18:41:58

您的日期是索引,因此在尝试使用不存在的“日期”列进行选择时会出现一个关键错误。下面是一个玩具示例,说明如何使用索引进行选择。

代码语言:javascript
复制
import pandas as pd

df = pd.DataFrame({'Date': ['2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04', '2022-01-05'],
    'this': [5,2,2,5,5], 
    'that': [3,3,3,3,3]},
    )

df.to_csv('dates.csv', index=False)

dates  = pd.read_csv('dates.csv', index_col=0, parse_dates=['Date'])

dates = dates.loc[(dates.index > '2022-01-01') & (dates.index <= '2022-01-03')]

输出:

代码语言:javascript
复制
            this    that
Date        
2022-01-02  2       3
2022-01-03  2       3
票数 1
EN

Stack Overflow用户

发布于 2022-02-27 18:46:04

iloc用于整数索引-即按行位置。

尝试使用loc代替。还请注意,熊猫接受日期作为字符串,并进行必要的转换为您。

代码语言:javascript
复制
startdate = "2010-7-7"
enddate = "2010-7-15"
selection = all_max[0].loc[startdate:enddate]
dates = selection.index
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71287447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档