Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用pandas/python从导入的CSV中拾取日期_Python_Csv_Pandas - Fatal编程技术网

使用pandas/python从导入的CSV中拾取日期

使用pandas/python从导入的CSV中拾取日期,python,csv,pandas,Python,Csv,Pandas,我有一个包含每日数据的.csv文件,如下所示: some 19 more header rows Werte 01.01.1971 07:00:00 ; 0.0 02.01.1971 07:00:00 ; 1.2 ...and so on 我用以下方式导入: RainD=pd.read_csv('filename.csv',skiprows=20,sep=';',dayfirst=True,parse_dates=True) 结果,我得到了 In [416]: Rai

我有一个包含每日数据的.csv文件,如下所示:

some 19 more header rows
Werte
01.01.1971 07:00:00   ;     0.0
02.01.1971 07:00:00   ;     1.2
...and so on
我用以下方式导入:

RainD=pd.read_csv('filename.csv',skiprows=20,sep=';',dayfirst=True,parse_dates=True)
结果,我得到了

In [416]: RainD
Out[416]: 
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 14976 entries, 1971-01-01 07:00:00 to 2012-01-01 07:00:00
Data columns:
Werte:    14976  non-null values
dtypes: object(1)
[416]中的
:RainD
出[416]:
日期时间索引:14976条记录,1971-01-01 07:00:00至2012-01-01 07:00:00
数据列:
Werte:14976个非空值
数据类型:对象(1)
所以这是一个数据帧,但也许Timeseries是正确的方法?但我如何将其导入?熊猫文档在
read\u csv
中列出了一个
dtype
选项,但没有关于我可以/应该指定什么的信息

但另一方面,
DatetimeIndex:
在我看来,熊猫非常清楚我在这里处理日期,但它仍然是一个数据帧。对于这一点,类似于
RainD['1971']
的东西只会导致
u'no item named 1971'
Key错误

我有一种感觉,我只是错过了一些非常明显的东西,因为时间序列分析似乎是熊猫的目的

我的另一个第一个想法是,熊猫可能会因为日期是用正确的方式(即dd.mm.yyyy;)写的而感到困惑,但是一个
RainD.head()
告诉我我可以很好地消化它

问候
JC

EdChum的
df[df.index.year==1971]
解决了我的问题


我可能还有一些其他问题(即熊猫的过时版本),但现在我可以继续工作。

索引选择失败的原因是,您试图访问的索引标签或列中的字符串
'1971'
无效,如果您想过滤df以查找年份为
1971
的索引值,那么以下操作将起作用:
df[df.index.year==1971]
,您可能会将索引语义与完全不同的a混淆,我仍然混淆了很多事情;)…但是现在,
df[df.index.year==1971]
确实大大减少了我的困惑!谢谢但是在我考虑这个问题之前,也许还有另外一件事:那么,在这种情况下,数据流和时间序列的区别是什么呢?或者问另一个问题:这是正确的方法吗,或者说是一个粗糙的黑客,很快就会导致我遇到其他问题?我的评论回答了你的问题吗?你得到了一个数据帧,因为
read\u csv
总是返回一个数据帧。如果你想把它作为一个系列,你可以选择一列,上面有
RainD['Werte']
(顺便说一句,TimeSeries不是什么特别的东西,它只是一个(不再使用)带有DatetimeIndex的系列的别名)。你应该接受你自己的答案,这样这篇文章的状态就是“已回答”,分数线下面会有一个空的记号,我可以,但我必须等两天。