标签: pandas-groupby

在DataFrame中组合重复的列

如果我的数据框具有包含相同名称的列,是否有办法将具有相同名称的列与某种函数(即总和)组合在一起?

例如:

In [186]:

df["NY-WEB01"].head()
Out[186]:
                NY-WEB01    NY-WEB01
DateTime        
2012-10-18 16:00:00  5.6     2.8
2012-10-18 17:00:00  18.6    12.0
2012-10-18 18:00:00  18.4    12.0
2012-10-18 19:00:00  18.2    12.0
2012-10-18 20:00:00  19.2    12.0
Run Code Online (Sandbox Code Playgroud)

我如何通过对列名相同的每一行进行求和来折叠NY-WEB01列(有一堆重复的列,而不仅仅是NY-WEB01)?

python group-by dataframe pandas pandas-groupby

16
推荐指数
2
解决办法
1万
查看次数

pandas group by year,按销售列排名,在具有重复数据的数据框中

我想创建一年的排名(因此在2012年,经理B为1. 2011年,经理B再次为1).我和pandas rank函数挣扎了一段时间,并且不想求助于for循环.

s = pd.DataFrame([['2012','A',3],['2012','B',8],['2011','A',20],['2011','B',30]], columns=['Year','Manager','Return'])

Out[1]:     
   Year Manager  Return    
0  2012       A       3    
1  2012       B       8    
2  2011       A      20    
3  2011       B      30
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是附加代码(之前认为这不相关):

s = pd.DataFrame([['2012', 'A', 3], ['2012', 'B', 8], ['2011', 'A', 20], ['2011', 'B', 30]], columns=['Year', 'Manager', 'Return'])
b = pd.DataFrame([['2012', 'A', 3], ['2012', 'B', 8], ['2011', 'A', 20], ['2011', 'B', 30]], columns=['Year', 'Manager', 'Return'])

s = s.append(b)
s['Rank'] = s.groupby(['Year'])['Return'].rank(ascending=False)

raise Exception('Reindexing only valid with uniquely valued Index '
Exception: Reindexing only …
Run Code Online (Sandbox Code Playgroud)

python duplicates rank pandas pandas-groupby

16
推荐指数
1
解决办法
2万
查看次数

为什么熊猫滚动使用单维ndarray

我有动力使用pandas rolling功能来执行滚动多因素回归(这个问题不是关于滚动多因素回归).我希望我能够apply在a之后使用df.rolling(2)并将得到的pd.DataFrame提取物与ndarray一起使用.values并执行必要的矩阵乘法.它没有那么成功.

这是我发现的:

import pandas as pd
import numpy as np

np.random.seed([3,1415])
df = pd.DataFrame(np.random.rand(5, 2).round(2), columns=['A', 'B'])
X = np.random.rand(2, 1).round(2)
Run Code Online (Sandbox Code Playgroud)

对象是什么样的:

print "\ndf = \n", df
print "\nX = \n", X
print "\ndf.shape =", df.shape, ", X.shape =", X.shape

df = 
      A     B
0  0.44  0.41
1  0.46  0.47
2  0.46  0.02
3  0.85  0.82
4  0.78  0.76

X = 
[[ 0.93]
 [ 0.83]]

df.shape = (5, …
Run Code Online (Sandbox Code Playgroud)

python group-by numpy pandas pandas-groupby

16
推荐指数
2
解决办法
4389
查看次数

Python Pandas中的对象在组内的时差

我有一个如下所示的数据框:

from    to         datetime              other
-------------------------------------------------
11      1     2016-11-06 22:00:00          -
11      1     2016-11-06 20:00:00          -
11      1     2016-11-06 15:45:00          -
11      12    2016-11-06 15:00:00          -
11      1     2016-11-06 12:00:00          -
11      18    2016-11-05 10:00:00          -
11      12    2016-11-05 10:00:00          -
12      1     2016-10-05 10:00:59          -
12      3     2016-09-06 10:00:34          -
Run Code Online (Sandbox Code Playgroud)

我想分组"从"然后"到"列,然后按降序排序"日期时间",然后最终想要计算当前时间和下一次之间按对象分组的时间差.例如,在这种情况下,我想拥有如下数据框:

from    to     timediff in minutes                                          others
11      1            120
11      1            255
11      1            225
11      1            0 (preferrably subtract this date from the epoch)
11      12           300 …
Run Code Online (Sandbox Code Playgroud)

python pandas difference data-science pandas-groupby

16
推荐指数
3
解决办法
3416
查看次数

如何使用 groupby 并应用 Polars

我正在绞尽脑汁地试图弄清楚如何在Python的极坐标库中使用groupbyand 。apply

来自 Pandas,我使用的是:

def get_score(df):
   return spearmanr(df["prediction"], df["target"]).correlation

correlations = df.groupby("era").apply(get_score)
Run Code Online (Sandbox Code Playgroud)

但在极地,这不起作用。

我尝试了几种方法,主要是:

correlations = df.groupby("era").apply(get_score)
Run Code Online (Sandbox Code Playgroud)

但这失败并出现错误消息:

'可以获取 DataFrame 属性'_df'。确保返回 DataFrame 对象。: PyErr { type: <class 'AttributeError'>, value: AttributeError("'numpy.float64' object has no attribute '_df'"),

有任何想法吗?

python pandas pandas-groupby python-polars

16
推荐指数
1
解决办法
1万
查看次数

按照Pandas中的组大小对分组数据进行排序

我的数据集中有两列,col1和col2.我希望按照col1对数据进行分组,然后根据每个组的大小对数据进行排序.也就是说,我想以其大小的升序显示组.

我编写了用于分组和显示数据的代码,如下所示:

grouped_data = df.groupby('col1')
"""code for sorting comes here"""
for name,group in grouped_data:
          print (name)
          print (group)
Run Code Online (Sandbox Code Playgroud)

在显示数据之前,我需要按照组大小对其进行排序,这是我无法做到的.

python python-3.x pandas pandas-groupby

15
推荐指数
2
解决办法
2万
查看次数

获取groupby中的第一个和最后一个值

我有一个数据帧 df

df = pd.DataFrame(np.arange(20).reshape(10, -1),
                  [['a', 'a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd'],
                   ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']],
                  ['X', 'Y'])
Run Code Online (Sandbox Code Playgroud)

如何获取按索引第一级分组的第一行和最后一行?

我试过了

df.groupby(level=0).agg(['first', 'last']).stack()
Run Code Online (Sandbox Code Playgroud)

得到了

          X   Y
a first   0   1
  last    6   7
b first   8   9
  last   12  13
c first  14  15
  last   16  17
d first  18  19
  last   18  19
Run Code Online (Sandbox Code Playgroud)

这非常接近我想要的.如何保留1级索引并改为:

      X   Y
a a   0   1
  d   6   7
b e   8   9
  g  12  13 …
Run Code Online (Sandbox Code Playgroud)

python group-by dataframe pandas pandas-groupby

15
推荐指数
3
解决办法
1万
查看次数

如何对列表中其他列分组的列进行求和?

我有一个如下列表.

[['Andrew', '1', '9'], ['Peter', '1', '10'], ['Andrew', '1', '8'], ['Peter', '1', '11'], ['Sam', '4', '9'], ['Andrew', '2', '2']]
Run Code Online (Sandbox Code Playgroud)

我想总结由其他列分组的最后一列.结果是这样的

[['Andrew', '1', '17'], ['Peter', '1', '21'], ['Sam', '4', '9'], ['Andrew', '2', '2']]
Run Code Online (Sandbox Code Playgroud)

这仍然是一个清单.

在实际操作中,我总是想总结由许多其他列分组的最后一列.有没有办法在Python中做到这一点?非常感激.

python list dataframe pandas pandas-groupby

15
推荐指数
5
解决办法
807
查看次数

大熊猫的聚合

  1. 如何用熊猫进行聚合?
  2. 聚合后没有DataFrame!发生了什么?
  3. 如何聚合主要字符串列(到lists,tuples,strings with separator)?
  4. 如何汇总计数?
  5. 如何创建由聚合值填充的新列?

我已经看到了这些反复出现的问题,询问了大熊猫聚合功能的各个方面.今天关于聚合及其各种用例的大部分信息都是在数十个措辞严重,不可搜索的帖子中分散的.这里的目的是为后代整理一些更重要的观点.

此Q/A旨在成为一系列有用的用户指南中的下一部分:

请注意,这篇文章并不是要取代有关聚合groupby文档,所以请阅读它!

python aggregation dataframe pandas pandas-groupby

15
推荐指数
2
解决办法
7273
查看次数

以不寻常的方式对熊猫数据框进行分组

问题

我有以下熊猫数据框:

    data = {
        'ID':  [100, 100, 100, 100, 200, 200, 200, 200, 200, 300, 300, 300, 300, 300],
        'value': [False, False, True, False, False, True, True, True, False, False, False, True, True, False],
    }
    df = pandas.DataFrame (data, columns = ['ID','value'])
Run Code Online (Sandbox Code Playgroud)

我想获得以下组:

  • 第 1 组:对于每个 ID,所有 False 行,直到该 ID 的第一个 True 行
  • 第 2 组:对于每个 ID,该 ID 的最后一个 True 行之后的所有 False 行
  • 第 3 组:所有真实行

在此处输入图片说明

这可以用熊猫来完成吗?

我试过的

我试过了

group = df.groupby((df['value'].shift() != df['value']).cumsum())
Run Code Online (Sandbox Code Playgroud)

但这会返回错误的结果。

python pandas pandas-groupby

15
推荐指数
1
解决办法
297
查看次数