使用pandas/python从导入的CSV中拾取日期
我有一个包含每日数据的.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
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()
告诉我我可以很好地消化它
问候
JCEdChum的
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的系列的别名)。你应该接受你自己的答案,这样这篇文章的状态就是“已回答”,分数线下面会有一个空的记号,我可以,但我必须等两天。