相关疑难解决方法(0)

Pandas - 如何在列中展平分层索引

我有一个数据框,在第1轴(列)中有一个分层索引(来自一个groupby.agg操作):

     USAF   WBAN  year  month  day  s_PC  s_CL  s_CD  s_CNT  tempf       
                                     sum   sum   sum    sum   amax   amin
0  702730  26451  1993      1    1     1     0    12     13  30.92  24.98
1  702730  26451  1993      1    2     0     0    13     13  32.00  24.98
2  702730  26451  1993      1    3     1    10     2     13  23.00   6.98
3  702730  26451  1993      1    4     1     0    12     13  10.04   3.92
4  702730  26451  1993      1    5     3     0    10     13  19.94  10.94
Run Code Online (Sandbox Code Playgroud)

我想扁平它,所以它看起来像这样(名字不重要 …

python dataframe pandas

266
推荐指数
12
解决办法
17万
查看次数

命名返回Pandas聚合函数中的列?

我在使用Pandas的groupby功能时遇到了麻烦.我已经阅读了文档,但是我无法弄清楚如何将聚合函数应用于多个列为这些列提供自定义名称.

这非常接近,但返回的数据结构具有嵌套的列标题:

data.groupby("Country").agg(
        {"column1": {"foo": sum()}, "column2": {"mean": np.mean, "std": np.std}})
Run Code Online (Sandbox Code Playgroud)

(即.我想取column2的mean和std,但将这些列作为"mean"和"std"返回)

我错过了什么?

python group-by aggregate-functions pandas

69
推荐指数
4
解决办法
8万
查看次数

groupby加权平均值和pandas数据帧中的总和

我有一个数据帧,

    Out[78]: 
   contract month year  buys  adjusted_lots    price
0         W     Z    5  Sell             -5   554.85
1         C     Z    5  Sell             -3   424.50
2         C     Z    5  Sell             -2   424.00
3         C     Z    5  Sell             -2   423.75
4         C     Z    5  Sell             -3   423.50
5         C     Z    5  Sell             -2   425.50
6         C     Z    5  Sell             -3   425.25
7         C     Z    5  Sell             -2   426.00
8         C     Z    5  Sell             -2   426.75
9        CC     U    5   Buy              5  3328.00
10       SB …
Run Code Online (Sandbox Code Playgroud)

python r pandas

34
推荐指数
4
解决办法
3万
查看次数

将不同的聚合函数应用于不同的列(现在不建议使用带重命名的字典)

我之前曾问过这个问题:python pandas:将不同的聚合函数应用于不同的列, 但对pandas的最新更改https://github.com/pandas-dev/pandas/pull/15931 意味着我认为这是一种优雅而pythonic不推荐使用该解决方案,原因是我确实无法理解。

问题过去是,现在仍然是:在进行分组时,如何将不同的聚合函数应用于不同的字段(例如x的总和,x的平均值,y的最小值,z的最大值等)并重命名结果字段,一口气,或者至少以一种可能的pythonic且不太麻烦的方式?即sum_x不会,我需要显式重命名字段。

我喜欢这种方法:

df.groupby('qtr').agg({"realgdp": {"mean_gdp": "mean", "std_gdp": "std"},
                                "unemp": {"mean_unemp": "mean"}})
Run Code Online (Sandbox Code Playgroud)

将不推荐使用,现在会产生以下警告:

FutureWarning: using a dict with renaming is deprecated and will be removed in a future version
Run Code Online (Sandbox Code Playgroud)

谢谢!

python group-by pandas

5
推荐指数
1
解决办法
872
查看次数

pandas:如何按多列分组并在多列上执行不同的聚合?

可以说我有一个看起来像这样的表:

Company      Region     Date           Count         Amount
AAA          XXY        3-4-2018       766           8000
AAA          XXY        3-14-2018      766           8600
AAA          XXY        3-24-2018      766           2030
BBB          XYY        2-4-2018        66           3400
BBB          XYY        3-18-2018       66           8370
BBB          XYY        4-6-2018        66           1380
Run Code Online (Sandbox Code Playgroud)

我想摆脱日期列的,然后由公司与区域聚集寻找伯爵和金额之和的平均值.

预期产量:

Company      Region     Count         Amount
AAA          XXY        766           18630
BBB          XYY        66            13150
Run Code Online (Sandbox Code Playgroud)

我在这里查看了这篇文章,还有很多其他在线帖子,但看起来他们只是执行一种聚合操作(例如,我可以通过多列聚合,但只能产生一个列输出作为总和OR计数,而不是和和计数)

从Pandas聚合重命名结果列("FutureWarning:使用带重命名的dict已弃用")

有人可以帮忙吗?

我做了什么:

我在这里关注这篇文章:

https://www.shanelynn.ie/summarising-aggregation-and-grouping-data-in-python-pandas/

但是,当我尝试使用本文中提供的方法(在文章末尾)时,通过使用字典:

aggregation = {
    'Count': {
        'Total Count': 'mean'
    },
    'Amount': {
        'Total Amount': 'sum'
    }
}
Run Code Online (Sandbox Code Playgroud)

我会收到这个警告:

FutureWarning: using …
Run Code Online (Sandbox Code Playgroud)

python pandas pandas-groupby

5
推荐指数
1
解决办法
441
查看次数

如何在 Pandas 0.21+ 中对多列进行 groupby() 聚合并重命名多索引?

代码

import pandas as pd
df = pd.DataFrame({'A': [1, 1, 1, 2, 2],
                    'B': range(5),
                    'C': range(5)})

df1 = df.groupby('A').B.agg({'B': ['count','nunique'],'C': ['sum','median']})
df1.columns = ["_".join(x) for x in df1.columns.ravel()]
Run Code Online (Sandbox Code Playgroud)

df1 输出

   B_count  B_nunique  C_sum  C_median
A                                     
1        3          3      3       1.0
2        2          2      7       3.5
Run Code Online (Sandbox Code Playgroud)

警告

__main__:1: FutureWarning: using a dict on a Series for aggregation
is deprecated and will be removed in a future version
Run Code Online (Sandbox Code Playgroud)

这是 Pandas 0.20 之前推荐的分组和重命名方式。在没有此警告的情况下实现相同 df1 输出的优雅方法是什么?

python pandas sklearn-pandas pandas-groupby

4
推荐指数
1
解决办法
8229
查看次数

groupby,sum和count到一个表

我有一个数据框如下

df=pd.DataFrame({"A":np.random.randint(1,10,9),"B":np.random.randint(1,10,9),"C":list('abbcacded')})

   A  B  C
0  9  6  a
1  2  2  b
2  1  9  b
3  8  2  c
4  7  6  a
5  3  5  c
6  1  3  d
7  9  9  e
8  3  4  d
Run Code Online (Sandbox Code Playgroud)

我想在下面获得分组结果(使用key ="C"列),并且有意地删除行cd和e.

   number   A_sum   B_sum
a   2        16       15
b   2        3        11
Run Code Online (Sandbox Code Playgroud)

这是2row*3列数据帧.分组键是C列."数字"栏表示每个字母(a和b)的计数.A_sum和B_sum表示对C列中的字母总和进行分组.

我想我们应该使用方法groupby但是如何获得这个数据汇总表呢?

python numpy pandas

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