【发布时间】:2020-02-16 18:33:06
【问题描述】:
糟糕的标题,但在这里。我有一个 13,000 x 91 的数据框。 26 列是数字。这些行是单个项目,项目绩效按年份划分。像这样:
| Year | Control | Description | USD_Cost | USD_Profit |
|------|---------|---------------|----------|------------|
| 1991 | A1 | A description | 1 | 2 |
| 1992 | A1 | A Description | 100 | 300 |
| 1991 | B1 | B Description | 3 | 50 |
| 1995 | C1 | C Description | 5 | 10 |
| 1990 | D1 | D Description | 2 | 1 |
| 1996 | D1 | D Description | 1 | 1 |
我不想记录每个项目在每个特定年份的表现,我只想记录每个项目持续了多长时间,以及项目的整体表现:
| Years | Control | Description | USD_Cost | USDProfit |
|-------|---------|---------------|----------|-----------|
| 2 | A1 | A description | 101 | 302 |
| 1 | B1 | B Description | 3 | 50 |
| 1 | C1 | C Description | 5 | 10 |
| 2 | D1 | D Description | 3 | 2 |
Control 和 Description 不会更改,但以 USD 开头的数字列会跨行求和。并且有 26 美元列用于不同的性能方面。大约有 8000 个唯一的 Control Number,但 Year-ControlNumber 组合共有 13000 个。
我知道如何为一个元素分组(例如print(dft.groupby(['Control'])['USD_Cost', 'USD_Profit'].sum() ),但是当我这样做时,我想我会丢失所有非数字列。另外,我想避免输入所有 26 美元列的名称.
这可以用 groupby 完成吗?
【问题讨论】:
标签: python pandas dataframe pandas-groupby