【发布时间】:2021-05-09 13:03:40
【问题描述】:
df1 = pd.DataFrame({'type': ['cst1', 'cst1', 'cst1','cst1','cst2','cst2','cst2','cst3','cst3','cst3','cst3'],'year':[2017,2018,2019,2020,2018,2019,2020,2017,2018,2019,2020]})
type year
0 cst1 2017
1 cst1 2018
2 cst1 2019
3 cst1 2020
4 cst2 2018
5 cst2 2019
6 cst2 2020
7 cst3 2017
8 cst3 2018
9 cst3 2019
10 cst3 2020
对于上述数据框,需要检查每个类型值是否存在于所有四年中 [2017,2018,2019,2020] 需要标记为 1,否则标记为 0。 例如:第一种类型 cst1 出现在所有 4 年中,因此标记为 1,cst2 仅出现在 3 年中,因此标记为 1。 注意:理想情况下,仅包含四年,即 2017 - 2020。类型和年份组合将是唯一的。
想要的输出:
type year label
0 cst1 2017 1
1 cst1 2018 1
2 cst1 2019 1
3 cst1 2020 1
4 cst2 2018 0
5 cst2 2019 0
6 cst2 2020 0
7 cst3 2017 1
8 cst3 2018 1
9 cst3 2019 1
10 cst3 2020 1
【问题讨论】:
-
如果有
[2016,2017,2018,2019,2020,2021],cst4会是 1 还是 0? -
如果
cst4有[2017, 2017, 2018, 2019, 2020, 2020],其他问题会是1 还是0? -
@HenryEcker 是的,好点子!让我们也将
[2019,2017,2018,2020]添加到我们的列表中...... :) -
@perl 感谢您的回复,数据仅包含从 2017 年到 2020 年的四年。类型和年份组合将是唯一的。