我有一个数据框,在第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
我想扁平它,所以它看起来像这样(名字不重要 …
我在使用Pandas的groupby功能时遇到了麻烦.我已经阅读了文档,但是我无法弄清楚如何将聚合函数应用于多个列并为这些列提供自定义名称.
这非常接近,但返回的数据结构具有嵌套的列标题:
data.groupby("Country").agg(
        {"column1": {"foo": sum()}, "column2": {"mean": np.mean, "std": np.std}})
(即.我想取column2的mean和std,但将这些列作为"mean"和"std"返回)
我错过了什么?
我有一个数据帧,
    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 …我之前曾问过这个问题: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"}})
将不推荐使用,现在会产生以下警告:
FutureWarning: using a dict with renaming is deprecated and will be removed in a future version
谢谢!
可以说我有一个看起来像这样的表:
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
我想摆脱日期列的,然后由公司与区域聚集到寻找伯爵和金额之和的平均值.
预期产量:
Company      Region     Count         Amount
AAA          XXY        766           18630
BBB          XYY        66            13150
我在这里查看了这篇文章,还有很多其他在线帖子,但看起来他们只是执行一种聚合操作(例如,我可以通过多列聚合,但只能产生一个列输出作为总和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'
    }
}
我会收到这个警告:
FutureWarning: using …代码
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()]
df1 输出
   B_count  B_nunique  C_sum  C_median
A                                     
1        3          3      3       1.0
2        2          2      7       3.5
警告
__main__:1: FutureWarning: using a dict on a Series for aggregation
is deprecated and will be removed in a future version
这是 Pandas 0.20 之前推荐的分组和重命名方式。在没有此警告的情况下实现相同 df1 输出的优雅方法是什么?
我有一个数据框如下
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
我想在下面获得分组结果(使用key ="C"列),并且有意地删除行cd和e.
   number   A_sum   B_sum
a   2        16       15
b   2        3        11
这是2row*3列数据帧.分组键是C列."数字"栏表示每个字母(a和b)的计数.A_sum和B_sum表示对C列中的字母总和进行分组.
我想我们应该使用方法groupby但是如何获得这个数据汇总表呢?