草庐IT

groupby-apply

全部标签

python - Pandas :在 groupby 'date' 中删除重复项

在下面的数据框中,我想消除重复的cid值,以便df.groupby('date').cid.size()的输出匹配df.groupby('date').cid.nunique()的输出。我看过这个post但似乎并没有很好的解决问题的办法。df=pd.read_csv('https://raw.githubusercontent.com/108michael/ms_thesis/master/crsp.dime.mpl.df')df.groupby('date').cid.size()date200572006237200736102008131820092664201099720116

python - 在 Pandas 中使用 groupby 来计算一列中与另一列相比的内容

也许groupby是错误的方法。似乎它应该工作,但我没有看到它...我想按结果对事件进行分组。这是我的数据框(df):StatusEventSUCCESSRunSUCCESSWalkSUCCESSRunFAILEDWalk这是我想要的结果:EventSUCCESSFAILEDRun21Walk01我正在尝试制作一个分组对象,但我不知道如何调用它来显示我想要的内容。grouped=df['Status'].groupby(df['Event']) 最佳答案 试试这个:pd.crosstab(df.Event,df.Status)Sta

python - 当系列包含集合时,为什么我的 pandas rolling().apply() 不起作用?

我有一个pandas系列,其中每个单元格都是一个元组。我正在尝试对该系列执行rolling().apply()操作,而我尝试应用的函数从未被调用过。这是一个愚蠢的例子,说明了我在说什么:>>>importpandasaspd>>>pd.__version__u'0.18.0'>>>die=lambdax:0/0>>>s=pd.Series(zip(range(5),range(5)))>>>s0(0,0)1(1,1)2(2,2)3(3,3)4(4,4)dtype:object一个简单的apply按预期工作,因为函数被调用:>>>s.apply(die)[...]ZeroDivision

python - 在 pandas 的 groupby 中排名

我有一个典型的“面板数据”(在计量经济学术语中,不是pandas面板对象)。数据框有一个Date列和一个ID列,以及包含特定值的其他列。对于每个日期,我需要根据V1对ID进行横截面排名,分成10个组(十分位数),并创建一个名为rank_col的新列(取值1到10)来确定排名。然后汇集所有rank1、rank2、...rank10跨时间获得一些统计数据,如平均值、标准差。这可以在SAS中通过以下代码轻松完成,它也说明了我的目的:procsortdata=df;byDate;procrankdata=dfout=df_rankedgroups=10;varV1;ranksrank_col;

python - 我们可以在 pandas.core.groupby.SeriesGroupBy 对象中看到组数据吗

我们可以检查pandas.core.groupby.SeriesGroupBy对象中的数据吗? 最佳答案 第一个选项:遍历所有组。forname,groupindf.groupby(column):print(name)print(group)print('\n')第二个选项:如果您想查看特定值的组,请使用get_group方法。df.groupby(column).get_group(name) 关于python-我们可以在pandas.core.groupby.SeriesGroup

python - pyspark Window.partitionBy 与 groupBy

假设我有一个包含大约21亿条记录的数据集。这是一个包含客户信息的数据集,我想知道他们做了多少次。所以我应该对ID进行分组并对一列求和(它有0和1值,其中1表示一个Action)。现在,我可以使用一个简单的groupBy和agg(sum)它,但据我所知,这并不是很有效。groupBy将在分区之间移动大量数据。或者,我也可以使用带有partitionBy子句的Window函数,然后对数据求和。缺点之一是我必须应用额外的过滤器,因为它会保留所有数据。我想要每个ID一条记录。但是我看不到这个窗口是如何处理数据的。是不是比这个groupBy和sum.还是一样? 最佳答

python - pandas 获得 groupby 的平均值

我试图找到每个user_id的平均每月费用,但我只能获得每个用户的平均费用或每个用户的每月费用。因为我按用户和月份分组,所以无法获得第二个分组依据(月份)的平均值,除非我将分组依据输出转换为其他内容。这是我的df:df={'id':pd.Series([1,1,1,1,2,2,2,2]),'cost':pd.Series([10,20,30,40,50,60,70,80]),'mth':pd.Series([3,3,4,5,3,4,4,5])}costidmth0101312013230143401545023560246702478025我可以获得每月总和,但我想要每个user_id

python - Pandas :.groupby().size() 和百分比

我有一个源自df.groupby().size()操作的DataFrame,看起来像这样:LocalizationRNAlevelcytoplasm1Non-expressed72Verylow133Low84Medium65Moderate86High27Veryhigh6cytoplasm&nucleus1Non-expressed52Verylow83Low24Medium105Moderate166High67Veryhigh5cytoplasm&nucleus&plasmamembrane1Non-expressed62Verylow33Low34Medium75Modera

python - 绘制 groupbys 时 Seaborn 出现“无法解释输入”错误

假设我有这个数据框d={'Path':['abc','abc','ghi','ghi','jkl','jkl'],'Detail':['foo','bar','bar','foo','foo','foo'],'Program':['prog1','prog1','prog1','prog2','prog3','prog3'],'Value':[30,20,10,40,40,50],'Field':[50,70,10,20,30,30]}df=DataFrame(d)df.set_index(['Path','Detail'],inplace=True)dfFieldProgramVal

python - Pandas groupby 和 rolling_apply 忽略 NaN

我有一个pandas数据框,我想计算列的滚动平均值(在groupby子句之后)。但是,我想排除NaN。例如,如果groupby返回[2,NaN,1],则结果应为1.5,而当前它返回NaN。我尝试了以下方法,但似乎不起作用:df.groupby(by=['var1'])['value'].apply(pd.rolling_apply,3,lambdax:np.mean([iforiinxifiisnotnp.nanandi!='NaN']))如果我什至尝试这样做:df.groupby(by=['var1'])['value'].apply(pd.rolling_apply,3,lambd