python日期迭代_python-按日期迭代熊猫数据框的正确方法

我想按日期遍历数据框主轴日期.

例:

tdf = df.ix [date]

我遇到的问题是df.ix返回的类型发生了变化,给我留下了3种可能的情况

1)如果tdf中不存在该日期,则会引发错误,

KeyError:1394755200000000000

2)如果tdf中只有一项

打印类型(tdf)返回

< class'pandas.core.series.Series'>

3)如果tdf中有多个项目

打印类型(tdf)返回

< class'pandas.core.frame.DataFrame'>

为了避免第一种情况,我可以将其简单地包装在try catch块中,或者感谢jxstanford,我可以通过在df.index中使用if date来避免try catch块:

我遇到了一个带有熊猫系列和熊猫数据框架的不一致API的问题后言.我可以通过检查类型来解决此问题,但似乎我不必这样做.理想情况下,我希望类型保持不变.有更好的方法吗?

我正在运行pandas 0.13.1,目前正在使用csv加载数据

这是一个演示问题的完整示例.

from pandas import DataFrame

import datetime

path_to_csv = '/home/n/Documents/port/test.csv'

df = DataFrame.from_csv(path_to_csv, index_col=3, header=0, parse_dates=True, sep=',')

start_dt = df.index.min()

end_dt = df.index.max()

dt_step = datetime.timedelta(days=1)

df.sort_index(inplace=True)

cur_dt = start_dt

while cur_dt != end_dt:

if cur_dt in df.index:

print type(df.ix[cur_dt])

#run some other steps using cur_dt

cur_dt += dt_step

演示此问题的csv示例如下:

value1,value2,value3,Date,type

1,2,4,03/13/14,a

2,3,3,03/21/14,b

3,4,2,03/21/14,a

4,5,1,03/27/14,b

上面的代码打印出来

是否可以以一致的方式从tdf获取value1的值?还是我坚持为if声明并分别处理每种情况?

if type(df.ix[cur_dt]) == DataFrame:

....

if type(df.ix[cur_dt]) == Series:

....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值