利用pandas解决以下问题:Input One line: a dict contains "Region", "Date" and "Sales". Output: Print a series, which contains the monthly sales revenue for each region.
时间: 2023-07-19 18:07:58 浏览: 88
可以按照以下步骤来解决这个问题:
1. 将字典转换为pandas数据帧。
2. 将 "Date" 列转换为pandas日期时间对象,并将其设置为索引。
3. 使用 `groupby()` 方法按 "Region" 和月份对数据进行分组,并计算每个组的销售总额。
4. 将结果转换为 pandas 系列并打印。
下面是实现代码:
```python
import pandas as pd
# 输入字典
data = {"Region": ["A", "B", "A", "B", "A", "B"],
"Date": ["2021-01-01", "2021-01-05", "2021-02-03", "2021-02-10", "2021-03-15", "2021-03-20"],
"Sales": [100, 200, 150, 250, 300, 400]}
# 将字典转换为pandas数据帧
df = pd.DataFrame(data)
# 将 "Date" 列转换为pandas日期时间对象,并将其设置为索引
df["Date"] = pd.to_datetime(df["Date"])
df.set_index("Date", inplace=True)
# 按 "Region" 和月份对数据进行分组,并计算每个组的销售总额
monthly_sales = df.groupby([df.index.month, "Region"])["Sales"].sum()
# 将结果转换为 pandas 系列并打印
print(monthly_sales)
```
输出结果:
```
Date Region
1 A 100
B 200
2 A 150
B 250
3 A 300
B 400
Name: Sales, dtype: int64
```
如果你想将结果按照 "Region" 列进行重塑,可以使用 `unstack()` 方法:
```python
# 将结果按照 "Region" 列进行重塑
monthly_sales = monthly_sales.unstack()
# 打印结果
print(monthly_sales)
```
输出结果:
```
Region A B
Date
1 100 200
2 150 250
3 300 400
```
阅读全文