python - 将缺失的类别追加到行中
问题描述
我有一套id
。category
但是,我希望每个id
都具有相同的数量,category
可以指定为df.id.category.unique()
.
例如:
Input
df1 = {"id": [1,1,1,2,2,3,3,3,3],
"category": ["a","b","e","a","d","a","b","c","d"]
}
output1 = pd.DataFrame(df1)
output1
Out[57]:
id category
0 1 a
1 1 b
2 1 e
3 2 a
4 2 d
5 3 a
6 3 b
7 3 c
8 3 d
输出应该是:
Output
df2 = {"id": [1,1,1,1,1,2,2,2,2,2,3,3,3,3,3],
"category": sum([["a","b","c","d","e"] for _ in range(3)], [])}
output2 = pd.DataFrame(df2)
output2
Out[58]:
id category
0 1 a
1 1 b
2 1 c
3 1 d
4 1 e
5 2 a
6 2 b
7 2 c
8 2 d
9 2 e
10 3 a
11 3 b
12 3 c
13 3 d
14 3 e
如果可能的话,我希望有快速的优化。非常感谢!
解决方案
from itertools import product
df = pd.DataFrame(product(output1['id'].unique(), output1['category'].unique()),
columns=['id','category'])
print (df)
id category
0 1 a
1 1 b
2 1 e
3 1 d
4 1 c
5 2 a
6 2 b
7 2 e
8 2 d
9 2 c
10 3 a
11 3 b
12 3 e
13 3 d
14 3 c
或MultiIndex.from_product
与MultiIndex.to_frame
:
df = (pd.MultiIndex.from_product([output1['id'].unique(), output1['category'].unique()],
names=['id','category'])
.to_frame(index=False))
print (df)
id category
0 1 a
1 1 b
2 1 e
3 1 d
4 1 c
5 2 a
6 2 b
7 2 e
8 2 d
9 2 c
10 3 a
11 3 b
12 3 e
13 3 d
14 3 c
推荐阅读
- reactjs - Jest Mock API 函数导致反应“行为”警告并且状态没有得到更新
- azure-devops - 想在 Azure Devops 中使用(看板)板和板上的任务卡
- kotlin - 创建包含 TextCriteria 和一个其他字段的存储库查询
- jsf - PrimeFaces饼图悬停切片数据显示带小数位
- python - MPI程序给出MPI-通道初始化失败我该如何解决这个错误?
- javascript - 如何将 ISO 日期格式转换为 yyyymmddhsi 格式?
- python - 出现“错误:需要 Microsoft Visual C++ 14.0”。安装 PyAudio 时
- azure - Helm 3 安装多个配置文件
- c - How to convert strtod's 'P' binary exponent notation to decimal?
- typescript - 是否可以有具有不同值类型的交集类型?