数据帧数组,获取每个数据帧的最大值并在 Pandas 中求和

我有一个类似于这样的数据框数组:


index   date    profit  required    symbol  category

0   2008-04-01  5.0 3   AA  cat1

1   2008-04-02  4.0 6   AA  cat1

2   2008-04-03  1.0 2   AA  cat1

3   2008-04-04  2.0 3   AA  cat1

4   2008-04-05  3.0 4   AA  cat1

5   2008-04-06  0.0 7   AA  cat1


index   date    profit  required    symbol  category

0   2008-04-01  1.0 3   AA  cat1

1   2008-04-02  1.0 2   AA  cat1

2   2008-04-03  1.0 2   AA  cat1

3   2008-04-04  2.0 3   AA  cat1

4   2008-04-05  3.0 2   AA  cat1

5   2008-04-06  3.0 1   AA  cat1


index   date    profit  required    symbol  category

0   2008-04-01  3.0 1   AB  cat1

1   2008-04-02  5.0 1   AB  cat1

2   2008-04-03  1.0 1   AB  cat1

3   2008-04-04  3.0 3   AB  cat1

4   2008-04-05  3.0 2   AB  cat1

5   2008-04-06  4.0 1   AB  cat1


index   date    profit  required    symbol  category

0   2008-04-01  5.0 1   AC  cat2

1   2008-04-02  4.0 1   AC  cat2

2   2008-04-03  3.0 12  AC  cat2

3   2008-04-04  2.0 1   AC  cat2

4   2008-04-05  3.0 1   AC  cat2

5   2008-04-06  4.0 1   AC  cat2

每个数据框的符号和类别都是唯一的:我已将它们制成列,但它们是单个值,也可以这样使用。


我想要做的是,对于每个符号和每个类别:


所有利润的简单总和


每个数据帧所需的最大值之和


我可以用纯 Python 轻松地做到这一点(伪代码:有些事情变得更容易了):


result = {}

for df in dfs:

    result[df.symbol]["profits_generated"] += df["profit"].sum()

    result[df.symbol]["sum_of_max_required"] += df["required"].max()

    # same for category...

我的问题是:这可以翻译成熊猫吗?它会更有效还是更好读?


我可以做利润总和部分,比如:


pd.concat(dfs).groupby("symbol").sum()["profit"]

但不是每个数据帧的最大值之和。


慕斯王
浏览 118回答 1
1回答

米脂

您可以在添加keys时添加concatpd.concat(dfs,keys=range(len(dfs))).groupby([df.index.get_level_values(0),df.symbol])["profit"].max().sum()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python