python - 熊猫添加缺失的行
问题描述
我有以下输入:
Year Brand Model Value
2018 A a 1,00
2018 A b 2,00
2018 B a 3,00
2017 A b 4,00
2016 C b 5,00
我想添加缺少的组合:
- 对于每一年,我必须有 A、B 和 C
- 对于每个品牌,我必须有 a 和 b
预期的输出是这样的:
Year Brand Model Value
2018 A a 1
2018 A b 2
2018 B a 3,00
2018 B b
2018 C a
2018 C b
2017 A a
2017 A b 4
2017 B a
2017 B b
2017 C a
2017 C b
2016 A a
2016 A b
2016 B a
2016 B b
2016 C a
2016 C b 5
我怎样才能做到这一点 ?
解决方案
使用reindex
fromMultiIndex
创建者MultiIndex.from_product
:
mux = pd.MultiIndex.from_product([df['Year'].unique(),
df['Brand'].unique(),
df['Model'].unique()], names=['Year','Brand','Model'])
df = df.set_index(['Year','Brand','Model']).reindex(mux).reset_index()
print (df)
Year Brand Model Value
0 2018 A a 1,00
1 2018 A b 2,00
2 2018 B a 3,00
3 2018 B b NaN
4 2018 C a NaN
5 2018 C b NaN
6 2017 A a NaN
7 2017 A b 4,00
8 2017 B a NaN
9 2017 B b NaN
10 2017 C a NaN
11 2017 C b NaN
12 2016 A a NaN
13 2016 A b NaN
14 2016 B a NaN
15 2016 B b NaN
16 2016 C a NaN
17 2016 C b 5,00
推荐阅读
- python - 使用 Chrome 的 Python 和 Selenium 代理支持
- amazon-web-services - 在 AdministratorAccess 和 Amazons3FullAccess 之间选择哪个策略
- python - 如何读取 urllib3 下载的 .net 文件?
- python - `.. == not ..` 周围的语法无效
- python - 将字典的“key”=value 转换为 key:value 的实用函数
- android - 为什么 HMS PushKit 需要 android.permission.REQUEST_INSTALL_PACKAGES
- django - Django- distinct 不能按顺序工作
- excel - Excel折线图不连续
- react-native - react-native-reanimated 如何在“Animated.timing”函数之间使用延迟
- c# - Unity2D 脚本错误 - 找不到类型或命名空间“播放器”C#