这应该很简单。我想要的是根据函数的结果进行分组的能力,就像在SQL中一样,您可以按表达式进行分组:
SELECT substr(name, 1) as letter, COUNT(*) as count
FROM table
GROUP BY substr(name, 1)
这将计算以字母表中的每个字母开头的name列的行数。
我希望在python中也这样做,所以我假设我可以将一个函数传递给groupby。但是,这只会将索引列(第一列)传递给函数,例如0、1或2。
import pandas
# Return the first letter
def first_letter(row):
在Pandas中,如何在同一个数据集中进行多步/顺序聚合?好像每个步骤都是下一个步骤的“子查询”。
在SQL中,我可以这样想:
SELECT x.A, COUNT(x.B) as B_COUNT, SUM(x.C_SUM) as C_SUM
FROM (
SELECT df.A, df.B, SUM(df.C) as C_SUM
FROM df
GROUP BY df.A, df.B
) x
GROUP BY x.A
在Python3.4和Pandas0.19.2中工作,我有这样一个数据框架:
import pandas
import numpy
numpy.rand
有没有办法告诉pandas不要按字符列索引?我的代码是
A=['a','b','c']
B=[1,2,3]
pd.DataFrame(A,B)
0
1 a
2 b
3 c
我想要的是两列,这样我就可以按A列分组了,我该怎么做呢?我可以这样做,但我想跳过列名,以获得尽可能多的性能。
pd.DataFrame({'A':A,'B':B})
A B
0 a 1
1 b 2
2 c 3
我试图通过一个函数将df元组的pandas列表转换为独立DataFrames的len编号。我发现了一个简单的样本DataFrame,它由不同的动物类型组成。我不想创建一个元组格式的DataFrames列表,而是希望将它们推到单独的DataFrames表(不是元组等)中,而不是逐个调用df的位置(即animals[0]),因为我不知道任何给定的列表会有多长。有什么建议吗? import pandas as pd
df = pd.DataFrame({'animal': 'cat dog cat fish dog cat cat'.split(),
's
当我尝试按特定列进行groupby和sum by dataframe时,我会得到以下错误。
ValueError: Grouper for '<class 'pandas.core.frame.DataFrame'>' not 1-dimensional
我检查了其他解决方案,这不是双列名称标题问题。
请参阅下面的df3,除最后两列外,我希望对所有列进行分组,我想要sum()。
dfs head显示,如果我只是按列名称分组,它可以正常工作,但不适用于iloc,因为我知道iloc是我想要分组的正确公式。
我需要使用ILOC作为最终的dataframe将
这里我读了一个文件"userdata.xlsx":
ID Debt Email Age User
1 7.5 john@email.com 16 John
2 15 john@email.com 15 John
3 22 john@email.com 15 John
4 30 david@email.com 22 David
5 33 david@email.com 22 David
6 51 fred@email.com 61 Fred
7 11 fred@email.com 25 Fred
8
我正在尝试使用groupby中的两个变量来计算多列的标准差。然而,我的代码抛出了一个错误,我很难找出它。 我正在使用https://www.shanelynn.ie/summarising-aggregation-and-grouping-data-in-python-pandas/作为指南。 以下是示例数据帧: Book Home Num Pointspread odds
A P -135 -2.5 -110.0
B P NaN -3 -101.0
B P NaN -3
在熊猫中,我想按两栏分组,然后做一次计数。在此之后,我想删除我分组的列,并计算计数的平均值。我知道如何在sql中轻松地做到这一点,但是在Pandas中遇到了一些问题。我不能删除我以前分组的一列。有人知道如何做得好吗?
(只要关心最终结果,如果有更好的结果,程序就不必是这样的)
例:
Name, City
Anna, New York
Carl, New York
Carl, New York
Steven, London
Carl, London
Anna, Paris
Carl, Paris
Carl, Paris
按“名称”和“城市”分组,然后计数:
Name, City, Count
A
假设我有一个名为df的数据框架,如下所示:
id x y
1 10 A
2 12 B
3 10 B
4 4 C
5 9 A
6 15 A
7 6 B
现在我想将数据按y列分组,并得到每个组的2个最大值(x)的平均值,其结果如下
y
A (10+15)/2 = 12.5
B (12 + 10)/2 = 11
C 4
如果我试着用df.groupby('y')['x'].nlar
Postcode Borough Neighbourhood
283 M8Z Etobicoke Mimico NW
284 M8Z Etobicoke The Queensway West
285 M8Z Etobicoke Royal York South West
286 M8Z Etobicoke South of Bloor
287 M9Z Not assigned Not assi
我有一个dataframe,我想按ID字段的第一部分进行分组。例如,假设我有以下内容:
>>> import pandas as pd
>>> df=pd.DataFrame(data=[['AA',1],['AB',4],['AC',5],['BA',11],['BB',2],['CA',9]], columns=['ID','Value'])
>>> df
ID Value
0 AA 1
1
我试着在pandas中按列值分组,但是我没有得到。 示例: Col1 Col2 Col3
A 1 2
B 5 6
A 3 4
C 7 8
A 11 12
B 9 10
-----
result needed grouping by Col1
Col1 Col2 Col3
A 1,3,11 2,4,12
B 5,9 6,10
c 7