python - 在 Pandas DataFrame 中为按另一列分组的缺失数据添加行
问题描述
我有一个 Pandas 数据框,其中dates
肯定products
丢失了。我想将这些行添加到数据框中并为其分配sales
值 0。我该怎么做?
# Sample dataframe
import pandas as pd
df = pd.DataFrame({
'date': ['2020-01-01', '2020-01-01', '2020-01-01', '2020-01-02', '2020-01-02', '2020-01-03', '2020-01-03'],
'product': ['glass', 'clothes', 'food', 'glass', 'food', 'glass', 'clothes'],
'sales': [100, 120, 50, 90, 60, 110, 130]
})
date product sales
0 2020-01-01 glass 100
1 2020-01-01 clothes 120
2 2020-01-01 food 50
3 2020-01-02 glass 90
4 2020-01-02 food 60
5 2020-01-03 glass 110
6 2020-01-03 clothes 130
## 'clothes' is missing for 2020-01-02 and 'food' is missing for 2020-01-03
## What I want to get:
date product sales
0 2020-01-01 glass 100
1 2020-01-01 clothes 120
2 2020-01-01 food 50
3 2020-01-02 glass 90
4 2020-01-02 clothes 0
5 2020-01-02 food 60
6 2020-01-03 glass 110
7 2020-01-03 clothes 130
8 2020-01-03 food 0
解决方案
你可以这样做unstack()/stack()
:
(df.set_index(['date','product'])
.unstack(fill_value=0)
.stack()
.reset_index()
)
输出:
date product sales
0 2020-01-01 clothes 120
1 2020-01-01 food 50
2 2020-01-01 glass 100
3 2020-01-02 clothes 0
4 2020-01-02 food 60
5 2020-01-02 glass 90
6 2020-01-03 clothes 130
7 2020-01-03 food 0
8 2020-01-03 glass 110
推荐阅读
- php - 使用 PHP 创建嵌套的 JSON 对象
- ios - 如何将 Firebase 数据保存到数组中
- c++ - 将两个一维直方图合并为一个
- angular - 主细节 Angular 4
- firebase - 在 Flutter 中使用 Firebase Cloud Functions 的方法是什么。
- python - 我能为谁做这个?对象太深,无法满足所需数组
- docker - 如何在 docker compose 中使用 confluent/cp-kafka 图像与 localhost 上的广告和我的网络容器名称 kafka?
- json - Camel DataFormat Jackson 使用蓝图 XML DSL 引发上下文异常
- jquery - 每隔一周将 JQuery datepicker 限制为 1(每两周一次)
- java - 生成带有 minifyEnabled 设置为 true 的签名 APK 后,firebase UI 输出空白