我想按日期遍历数据框主轴日期.
例:
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:
....