我一直在尝试使用pandas groupby来分析数据,然后我在从0.15.0到0.18.1的更新pandas之后遇到了一个问题。
我想计算'equality'的值为1的连续周期数(它只能取值0或1)。我定义了followin lambda函数,并使用groupby命令如下:
.foo-on > .bar-on {visibility: visible;}
.foo-on > .bar-off {visibility: hidden;}
.foo-off > .bar-off {visibility: visible;}
.foo-off > .bar-on {visibility: hidden;}
但收到了最后一行代码的错误消息:
import pandas as pd
E = lambda x: np.sum(x.diff()==1) + x.head(1)
grouped = df.groupby(['run_'])
agg_data = grouped[['equality','avg_payoff']].mean()
agg_data['E'] = grouped.equality.agg(E) # number of "equality" epochs
这个代码在更新之前运行完美,这很奇怪。这不是我第一次在更新科学计算软件包后遇到问题,这让我有点沮丧。有人可以帮忙解决这个问题吗?或者我必须回滚到旧版本......
答案 0 :(得分:1)
x.head(1)返回系列(有一行但是系列)。 你可以像这样做一个愚蠢的解决方法
E = lambda x: np.sum(x.diff()==1) + np.sum(x.head(1))
或者更聪明一点
E = lambda x: np.sum(x.diff()==1) + x.iloc[0]