python pandas- AttributeError:' Series'对象没有属性'列'?

时间:2016-11-01 18:16:03

标签: python pandas user-defined-functions series

我正在尝试计算特定列的当前行值的次数' df1'落在前5行中的低 - 高范围值之间(在2个并排列中)。这是一个后续问题 - 迪克斯特已经完成了繁重的工作here

Series()。between()方法不合作,抱怨AttributeError: 'Series' object has no attribute 'columns'。我不明白我是如何处理columns属性的。

list1 = [[21,101],[22,110],[25,113],[24,112],[21,109],[28,108],[30,102],[26,106],[25,111],[24,110]]
dict1 = {}
dict1['df1'] = pd.DataFrame(list1,index=pd.date_range('2000-1-1',periods=10, freq='D'), columns=list('AB'))
dict1['df2'] = pd.DataFrame(dict1['df1'] * (1-.05))
pan_so = pd.Panel(dict1)
pan_so = pan_so.transpose(2,1,0)

x = pan_so.ix[0,:,:]
def btwn(x):  # x is a dataframe
    y = x['df1'].rolling(center=False,window=6)
    z = x['df2'].rolling(center=False,window=6)
    x['cnt_btwn'] = pd.Series(pd.Series(y[:-1]).between(z[-1], y[-1], inclusive=True).sum())
    return x
btwn(x) 

我做错了什么?谢谢!

1 个答案:

答案 0 :(得分:3)

y[:-1]可以访问不支持列索引的Rolling对象,即代码中[:-1]的含义。您应该应用转换函数并在过滤之前获得实际系列。