我有一个交易者交易数据集,其中感兴趣的变量是Buy/Sell,它是二进制的,如果交易是买入,则值为1,如果是卖出,则值为0。示例如下所示:TraderBuy/SellA1A0B1B1B0C1C0C0我想计算每个交易者的净买入/卖出,如果交易者有超过50%的交易是买入,他将有一个买入/卖出为1,如果他的买入少于50%,那么他的Buy/Sell将为0,如果恰好为50%,他将有NA(并且在未来的计算中将被忽略).因此,对于交易者A,买入比例为(买入数量)/(交易者总数)=1/2=0.5,得出NA。对于交易者B,它是2/3=0.67,这给出了1对于交易员C,它是1/3=0.33,这给出了0
我正在尝试研究如何使用pandas中的groupby函数根据给定的是/否标准计算每年的值比例。例如,我有一个名为names的数据框:NameNumberYearSexCriteria0name17891998MaleN1name16881999MaleN2name16392000MaleN3name25511998MaleY4name24991999MaleY我可以用namesgrouped=names.groupby(["Sex","Year","Criteria"]).sum()获得:NumberSexYearCriteriaMale1998N14507Y23081999N1411
我试图将表格中的几个字段分组,然后对这些组求和,但它们被重复计算了。我的模型如下:classCostCenter(db.Model):__tablename__='costcenter'id=db.Column(db.Integer,primary_key=True,autoincrement=True)name=db.Column(db.String)number=db.Column(db.Integer)classExpense(db.Model):__tablename__='expense'id=db.Column(db.Integer,primary_key=True,aut
我正在编写一个简短的程序,我想在其中异步调用一个函数,这样它就不会阻塞调用者。为此,我使用了python的multiprocessing模块中的Pool。在异步调用的函数中,我想返回一个namedtuple以符合我程序其余部分的逻辑,但我发现namedtuple确实似乎不是从派生进程传递到回调的受支持类型(可能是因为它不能被腌制)。这是问题的最小重现。frommultiprocessingimportPoolfromcollectionsimportnamedtuplelogEntry=namedtuple("LogEntry",['logLev','msg'])defdoSometh
我有一个结构如下的数据框:FirstABSecondbarbazfoobarbazfooThirdcatdogcatdogcatdogcatdogcatdogcatdog03877475322621865787186039292297318410833606322624694764315048481所以有三个列级别。我想在第二层添加一个新列,其中对每个第三层执行计算,例如“new”=“foo”+“bar”。所以生成的数据框看起来像:FirstABSecondbarbazfoonewbarbazfoonewThirdcatdogcatdogcatdogcatdogcatdogcatdog
是否可以在不使用的情况下直接计算两列的乘积(或例如总和)grouped.apply(lambdax:(x.a*x.b).sum()使用起来快很多(不到我机器上一半的时间)df['helper']=df.a*df.bgrouped=df.groupby(something)grouped['helper'].sum()df.drop('helper',axis=1)但我真的不喜欢必须这样做。例如,计算每组的加权平均值很有用。这里的lambda方法是grouped.apply(lambdax:(x.a*x.b).sum()/(df.b).sum())再一次比将helper除以b.sum()
我有一个由(STK_ID,RPT_Date)索引的数据框“RPT”,包含每个季度的累计股票销售额:salesSTK_IDRPT_Date000876200603317986270002006063016561100002006093027197000002006123135736600002007033187841500020070630202466000020070930335263000020071231479177000060014120060331270912000200606306589810002006093010102700002006123115915000002007
我已将数据加载到数据框中,该数据框中的列标题具有多索引。目前,我一直在按列索引对数据进行分组,以获取组的平均值并计算95%的置信区间,如下所示:frompandasimport*importpandasaspdfromscipyimportstatsasst#Normalizetostartingpointthenconvertnormalized=(data-data.ix[0])*11.11111#Groupnormalizeddatabasedonslopeandorientationgrouped=normalized.groupby(level=['SLOPE','DEPTH
我试图在分组和聚合后对数据(Pandas)进行排序,但我被卡住了。我的数据:data={'from_year':[2010,2011,2012,2011,2012,2010,2011,2012],'name':['John','John1','John','John','John4','John','John1','John6'],'out_days':[11,8,10,15,11,6,10,4]}persons=pd.DataFrame(data,columns=["from_year","name","out_days"])days_off_yearly=persons.group
我对numpy的numpy.apply_along_axis()函数何时会优于简单的Python循环感到困惑。例如,考虑一个有很多行的矩阵,您希望计算每一行的总和:x=np.ones([100000,3])sums1=np.array([np.sum(x[i,:])foriinrange(x.shape[0])])sums2=np.apply_along_axis(np.sum,1,x)在这里,我什至使用了一个内置的numpy函数,np.sum,但是计算sums1(Python循环)在计算时花费了不到400毫秒sums2(apply_along_axis)需要超过2000毫秒(Wind