草庐IT

groupby-apply

全部标签

python - 如何在 groupby 2 列之后保留 DataFrame 的原始索引?

在执行groupby后,有什么方法可以保留大型数据框的原始索引吗?我需要这样做的原因是因为我需要做一个内部合并回到我原来的df(在我的groupby之后)以重新获得那些丢失的列。索引值是执行合并的唯一“唯一”列。有谁知道我怎样才能做到这一点?我的DataFrame非常大。我的groupby看起来像这样:df.groupby(['col1','col2']).agg({'col3':'count'}).reset_index()这会从我想要保留的原始数据框中删除我的原始索引。 最佳答案 您可以通过reset_index将您的索引提升到

python - 为什么 df.apply(tuple) 有效但 df.apply(list) 无效?

这是一个数据框:ABC062-51252210313-5284362我可以使用df.apply从原始df中检索一个基本上是列元组的列:out=df.apply(tuple,1)print(out)0(6,2,-5)1(2,5,2)2(10,3,1)3(-5,2,8)4(3,6,2)dtype:object但是如果我想要一个值列表而不是它们的元组,我就做不到,因为它没有给我预期的结果:out=df.apply(list,1)print(out)ABC062-51252210313-5284362相反,我需要做的是:out=pd.Series(df.values.tolist())prin

python - 使用 groupby 的结果过滤 pandas 数据框

我有一个大数据框(4000万行),如果值满足groupby对象中的条件,我想根据一列过滤掉行。例如,这里是一些随机数据。“字母”列实际上有数千个唯一值:xyzletter0478630e158928b2965942a379645e4778037d5669135d6963152d756826e8789614a9226013e1075829d1155429c12833140e1337702c14536766a15763378d16646781b1723941d1810131e1952113d在'letter'列上应用groupby,并为每个字母获取x列的总和:df.groupby('let

python - 将函数应用于 pandas dataframe groupby 中的第二列

在pandas数据框中,可以使用函数对其索引进行分组。我希望定义一个应用于列的函数。我希望按两列分组,但我需要按任意函数foo对第二列进行分组:group_sum=df.groupby(['name',foo])['tickets'].sum()如何定义foo以将第二列分为两组,例如,根据值是否为>0来划分?或者,是否使用了完全不同的方法或语法? 最佳答案 Groupby可以接受标签和系列/数组的任意组合(只要数组的长度与数据框的长度相同),因此您可以将函数映射到您的列并将其传递到groupby,例如df.groupby(['nam

python - Pandas 用 groupby 划分两列

这显然很简单,但作为一个pandas新手,我被卡住了。我有一个包含3列的CSV文件,即州、bene_1_count和bene_2_count。我想计算给定状态下“bene_1_count”和“bene_2_count”的比率。df=pd.DataFrame({'state':['CA','WA','CO','AZ']*3,'bene_1_count':[np.random.randint(10000,99999)for_inrange(12)],'bene_2_count':[np.random.randint(10000,99999)for_inrange(12)]})我正在尝试以下

Python Pandas 从 Groupby 中选择组的随机样本

获取groupby元素的随机样本的最佳方法是什么?据我了解,groupby只是一个可迭代的组。如果我想选择N=200元素,我会为可迭代对象执行此操作的标准方法是:rand=random.sample(data,N)如果你尝试上面的数据是“分组”的,结果列表的元素出于某种原因是元组。我找到了以下随机选择单个键groupby元素的示例,但这不适用于多键groupby。来自,Howtoaccesspandasgroupbydataframebykeycreategroupbyobjectgrouped=df.groupby('some_key')pickNdataframesandgrabt

python - Pandas 函数 : DataFrame. apply() 运行顶行两次

这个问题在这里已经有了答案:Whydoespandasapplycalculatetwice(3个答案)关闭2年前。我有两个版本的函数使用PandasforPython2.7逐行通过inputs.csv。第一个版本在单列上使用Series.apply(),并按预期遍历每一行。第二个版本在多列上使用了DataFrame.apply(),并且出于某种原因它读取了顶行两次。然后它继续执行其余的行而不重复。知道为什么后者会读取顶行两次吗?版本#1–Series.apply()(读取顶行一次)importpandasaspddf=pd.read_csv(inputs.csv,delimiter=

python - Pandas groupby 分位数值

我尝试从数据框中计算特定的分位数值,如下面的代码所示。分行计算没有问题。尝试运行最后两行时,出现以下错误:AttributeError:'SeriesGroupBy'objecthasnoattribute'quantile(0.25)'我该如何解决这个问题?importpandasaspddf=pd.DataFrame({'x':[0,1,0,1,0,1,0,1],'y':[7,6,5,4,3,2,1,0],'number':[25000,35000,45000,50000,60000,70000,65000,36000]})f={'number':['median','std','

python - 用 groupby 方法替换值

我有一个DataFrame,其中有一列包含一些带有各种负值的错误数据。我想用它们所在的组的平均值替换值对于作为NA的缺失值,我会这样做:data=df.groupby(['GroupID']).columndata.transform(lambdax:x.fillna(x.mean()))但是如何在类似x的条件下执行此操作?谢谢! 最佳答案 使用@AndyHayden的示例,您可以将groupby/transform与replace一起使用:df=pd.DataFrame([[1,1],[1,-1],[2,1],[2,2]],col

python - pandas dataframe groupby 并获得第 n 行

我有一个像下面这样的pandasDataFrame。df=pd.DataFrame([[1.1,1.1,1.1,2.6,2.5,3.4,2.6,2.6,3.4,3.4,2.6,1.1,1.1,3.3],list('AAABBBBABCBDDD'),[1.1,1.7,2.5,2.6,3.3,3.8,4.0,4.2,4.3,4.5,4.6,4.7,4.7,4.8],['x/y/z','x/y','x/y/z/n','x/u','x','x/u/v','x/y/z','x','x/u/v/b','-','x/y','x/y/z','x','x/u/v/w'],['1','3','3','2'