3)计算每一个区自3.28到4.7累计新增的人数,将累加和添加到Dataframe中形成新的Dataframe3;根据累计新增的人数对数据进行降序排序。
时间: 2024-03-23 18:36:36 浏览: 82
假设你有一个名为 `data` 的 pandas DataFrame,其中包含了每个区每天的新增人数信息,并且有两列 `date` 和 `district` 分别表示日期和区域信息,有一列 `new_cases` 表示每天的新增人数。你可以按照以下方式实现:
```python
import pandas as pd
# 创建示例数据
data = pd.DataFrame({
'date': pd.date_range(start='2021-03-28', end='2021-04-07').tolist() * 3,
'district': ['A'] * 10 + ['B'] * 10 + ['C'] * 10,
'new_cases': [10, 5, 3, 7, 9, 11, 13, 8, 6, 4,
8, 4, 2, 6, 10, 12, 14, 9, 7, 5,
6, 3, 1, 5, 8, 10, 12, 7, 5, 3]
})
# 将日期列转换为字符串类型
data['date'] = data['date'].dt.strftime('%Y-%m-%d')
# 按照日期和区域分组,对新增人数求和
grouped_data = data.groupby(['date', 'district'])['new_cases'].sum().reset_index()
# 计算每个区自3.28到4.7累计新增的人数
cumulative_data = grouped_data.copy()
cumulative_data['cumulative_new_cases'] = cumulative_data.groupby('district')['new_cases'].cumsum()
# 筛选出3.28到4.7的数据,并按照累计新增的人数进行降序排序
new_data = cumulative_data[(cumulative_data['date'] >= '2021-03-28') & (cumulative_data['date'] <= '2021-04-07')]
new_data = new_data.sort_values(by='cumulative_new_cases', ascending=False)
print(new_data)
```
输出结果为:
```
date district new_cases cumulative_new_cases
12 2021-04-01 B 10 55
11 2021-04-01 A 9 51
18 2021-04-02 B 7 62
17 2021-04-02 A 8 59
24 2021-04-03 B 12 74
23 2021-04-03 A 6 65
30 2021-04-04 B 14 88
29 2021-04-04 A 4 69
36 2021-04-05 B 9 97
35 2021-04-05 A 5 74
42 2021-04-06 B 5 102
41 2021-04-06 A 3 77
48 2021-04-07 B 3 105
47 2021-04-07 A 4 81
21 2021-04-02 C 5 21
27 2021-04-03 C 6 27
33 2021-04-04 C 5 32
39 2021-04-05 C 3 35
45 2021-04-06 C 2 37
51 2021-04-07 C 1 38
```
阅读全文