Questions tagged «pandas-groupby»

用于根据给定条件将变量分组在一起。并且仅在与“ pandas”库相关的情况下使用

9
将Pandas GroupBy输出从Series转换为DataFrame
我从这样的输入数据开始 df1 = pandas.DataFrame( { "Name" : ["Alice", "Bob", "Mallory", "Mallory", "Bob" , "Mallory"] , "City" : ["Seattle", "Seattle", "Portland", "Seattle", "Seattle", "Portland"] } ) 打印时显示为: City Name 0 Seattle Alice 1 Seattle Bob 2 Portland Mallory 3 Seattle Mallory 4 Seattle Bob 5 Portland Mallory 分组非常简单: g1 = df1.groupby( …

7
使用pandas GroupBy获取每个组的统计信息(例如计数,均值等)?
我有一个数据框,df并且从中使用了几列groupby: df['col1','col2','col3','col4'].groupby(['col1','col2']).mean() 通过以上方法,我几乎得到了所需的表(数据框)。缺少的是另外一列,其中包含每个组中的行数。换句话说,我有意思,但我也想知道有多少个数字被用来获得这些价值。例如,在第一组中有8个值,在第二组中有10个值,依此类推。 简而言之:如何获取数据框的分组统计信息?

2
如何旋转数据框
什么是支点? 我如何枢纽? 这是支点吗? 长格式到宽格式? 我已经看到很多有关数据透视表的问题。即使他们不知道他们在询问数据透视表,通常也是如此。几乎不可能写出涵盖枢纽各个方面的规范问答。 ...但是我要去尝试一下。 现有问题和答案的问题在于,问题通常集中在OP难以推广的细微差别上,以便使用许多现有的良好答案。但是,没有一个答案试图给出全面的解释(因为这是一项艰巨的任务) 从我的Google搜索中查找一些示例 如何在Pandas中透视数据框? 好问题和答案。但是答案只回答了很少的具体问题。 熊猫数据透视表到数据框 在此问题中,OP与枢轴的输出有关。即列的外观。OP希望它看起来像R。这对熊猫用户不是很有帮助。 旋转数据框的熊猫,重复的行 另一个不错的问题,但答案集中在一种方法上,即 pd.DataFrame.pivot 因此,每当有人搜索时,pivot他们都会得到零星的结果,这些结果可能不会回答他们的特定问题。 设定 您可能会注意到,我显眼地命名了我的列和相关的列值,以与我将在下面的答案中介绍的方式相对应。 import numpy as np import pandas as pd from numpy.core.defchararray import add np.random.seed([3,1415]) n = 20 cols = np.array(['key', 'row', 'item', 'col']) arr1 = (np.random.randint(5, size=(n, 4)) // [2, 1, 2, 1]).astype(str) …


11
使用groupby获取分组中具有最大计数的行
count按['Sp','Mt']列分组后,如何找到熊猫数据框中所有具有列最大值的行? 示例1:以下数据框,我将其分组['Sp','Mt']: Sp Mt Value count 0 MM1 S1 a **3** 1 MM1 S1 n 2 2 MM1 S3 cb 5 3 MM2 S3 mk **8** 4 MM2 S4 bg **10** 5 MM2 S4 dgd 1 6 MM4 S2 rd 2 7 MM4 S2 cb 2 8 MM4 S2 uyi …

5
如何通过密钥按数据组访问熊猫
如何通过密钥访问groupby对象中的相应groupby数据帧? 通过以下groupby: rand = np.random.RandomState(1) df = pd.DataFrame({'A': ['foo', 'bar'] * 3, 'B': rand.randn(6), 'C': rand.randint(0, 20, 6)}) gb = df.groupby(['A']) 我可以遍历它来获取密钥和组: In [11]: for k, gp in gb: print 'key=' + str(k) print gp key=bar A B C 1 bar -0.611756 18 3 bar -1.072969 10 5 bar -2.301539 …

8
具有NaN(缺失)值的pandas GroupBy列
我有一个DataFrame,在我希望分组的列中有许多缺失的值: import pandas as pd import numpy as np df = pd.DataFrame({'a': ['1', '2', '3'], 'b': ['4', np.NaN, '6']}) In [4]: df.groupby('b').groups Out[4]: {'4': [0], '6': [2]} 看到Pandas删除了具有NaN目标值的行。(我想包括这些行!) 由于我需要许多这样的操作(许多col具有缺失的值),并且使用的函数比中位数(通常是随机森林)更复杂,因此我想避免编写过于复杂的代码。 有什么建议?我应该为此编写一个函数还是有一个简单的解决方案?

3
使用pandas GroupBy.agg()对同一列进行多次聚合
是否有熊猫内置的方法将两个不同的聚合函数f1, f2应用于同一列df["returns"],而无需agg()多次调用? 示例数据框: import pandas as pd import datetime as dt pd.np.random.seed(0) df = pd.DataFrame({ "date" : [dt.date(2012, x, 1) for x in range(1, 11)], "returns" : 0.05 * np.random.randn(10), "dummy" : np.repeat(1, 10) }) 语法上错误但直观上正确的方法是: # Assume `f1` and `f2` are defined for aggregating. df.groupby("dummy").agg({"returns": f1, "returns": f2}) 显然,Python不允许重复的键。还有其他表达方式agg()吗?也许元组列表[(column, …

10
通过熊猫DataFrame分组并选择最常用的值
我有一个包含三个字符串列的数据框。我知道第三列中的唯一一个值对于前两个的每种组合都有效。要清理数据,我必须按前两列按数据帧分组,并为每种组合选择第三列的最常用值。 我的代码: import pandas as pd from scipy import stats source = pd.DataFrame({'Country' : ['USA', 'USA', 'Russia','USA'], 'City' : ['New-York', 'New-York', 'Sankt-Petersburg', 'New-York'], 'Short name' : ['NY','New','Spb','NY']}) print source.groupby(['Country','City']).agg(lambda x: stats.mode(x['Short name'])[0]) 最后一行代码不起作用,它显示“键错误'Short name'”,如果我尝试仅按城市分组,则会收到AssertionError。我该如何解决?

4
使用Pandas groupby连接来自多行的字符串
我想基于Pandas中的groupedby合并数据框中的几个字符串。 到目前为止,这是我的代码: import pandas as pd from io import StringIO data = StringIO(""" "name1","hej","2014-11-01" "name1","du","2014-11-02" "name1","aj","2014-12-01" "name1","oj","2014-12-02" "name2","fin","2014-11-01" "name2","katt","2014-11-02" "name2","mycket","2014-12-01" "name2","lite","2014-12-01" """) # load string as stream into dataframe df = pd.read_csv(data,header=0, names=["name","text","date"],parse_dates=[2]) # add column with month df["month"] = df["date"].apply(lambda x: x.month) 我希望最终结果如下所示: 我不知道如何使用groupby并在“文本”列中应用某种形式的字符串连接。任何帮助表示赞赏!

4
熊猫数据框按日期时间月份分组
考虑一个csv文件: string,date,number a string,2/5/11 9:16am,1.0 a string,3/5/11 10:44pm,2.0 a string,4/22/11 12:07pm,3.0 a string,4/22/11 12:10pm,4.0 a string,4/29/11 11:59am,1.0 a string,5/2/11 1:41pm,2.0 a string,5/2/11 2:02pm,3.0 a string,5/2/11 2:56pm,4.0 a string,5/2/11 3:00pm,5.0 a string,5/2/14 3:02pm,6.0 a string,5/2/14 3:18pm,7.0 我可以阅读一下,然后将date列重新格式化为datetime格式: b=pd.read_csv('b.dat') b['date']=pd.to_datetime(b['date'],format='%m/%d/%y %I:%M%p') 我一直在尝试按月对数据进行分组。似乎应该有一种明显的方式来访问月份并以此进行分组。但是我似乎做不到。有人知道吗? 我目前正在尝试按日期重新建立索引: b.index=b['date'] 我可以这样访问月份: b.index.month 但是我似乎找不到按月汇总的函数。

9
熊猫:通过每组平均值填充缺失值
这应该很简单,但是我发现的最接近的内容是这篇文章: pandas:填充组中的缺失值,但我仍然无法解决我的问题...。 假设我有以下数据框 df = pd.DataFrame({'value': [1, np.nan, np.nan, 2, 3, 1, 3, np.nan, 3], 'name': ['A','A', 'B','B','B','B', 'C','C','C']}) name value 0 A 1 1 A NaN 2 B NaN 3 B 2 4 B 3 5 B 1 6 C 3 7 C NaN 8 C 3 我想在每个“名称”组中用平均值填写“ NaN”,即 …

2
如何从pandas groupby()。sum()的输出中创建新列?
尝试从groupby计算中创建新列。在下面的代码中,我获得了每个日期的正确计算值(请参阅下面的组),但是当我尝试df['Data4']用它创建一个新列()时,我得到了NaN。因此,我正在尝试在数据框中使用Data3所有日期的总和创建一个新列,并将其应用于每个日期行。例如,2015-05-08位于2行中(总计为50 + 5 = 55),在这个新列中,我希望两行都具有55。 import pandas as pd import numpy as np from pandas import DataFrame df = pd.DataFrame({ 'Date' : ['2015-05-08', '2015-05-07', '2015-05-06', '2015-05-05', '2015-05-08', '2015-05-07', '2015-05-06', '2015-05-05'], 'Sym' : ['aapl', 'aapl', 'aapl', 'aapl', 'aaww', 'aaww', 'aaww', 'aaww'], 'Data2': [11, 8, 10, 15, 110, 60, 100, 40], 'Data3': …

4
分组数据框并获得总和和计数?
我有一个看起来像这样的数据框: Company Name Organisation Name Amount 10118 Vifor Pharma UK Ltd Welsh Assoc for Gastro & Endo 2700.00 10119 Vifor Pharma UK Ltd Welsh IBD Specialist Group, 169.00 10120 Vifor Pharma UK Ltd West Midlands AHSN 1200.00 10121 Vifor Pharma UK Ltd Whittington Hospital 63.00 10122 Vifor Pharma UK Ltd …

5
按熊猫数据框分组,然后在每组中选择最新的
如何对熊猫数据框的值进行分组并从每个组中选择最新(按日期)? 例如,给定一个按日期排序的数据框: id product date 0 220 6647 2014-09-01 1 220 6647 2014-09-03 2 220 6647 2014-10-16 3 826 3380 2014-11-11 4 826 3380 2014-12-09 5 826 3380 2015-05-19 6 901 4555 2014-09-01 7 901 4555 2014-10-05 8 901 4555 2014-11-01 按ID或产品分组,然后选择最早给出: id product date 2 220 6647 2014-10-16 5 …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.