我有一个看起来像这样的数据框:
ID type period
1 2 3
1 2 3
1 3 3
2 2 3
2 3 2
2 3 2
3 2 2
总共有X个类型和X个周期。并非所有类型/句点都会被使用,但我需要为每个类型的所有 X 创建列,以便从 Pandas 导入时表不会在数据库中中断。(假设本例中的 X 是 3,但实际上是 9,只是在本例中缩短了。)
对于每个 ID,我需要一个 0 来显示该类型/句点是否存在,一个 1 来显示它是否存在。
所需的数据框如下所示:
ID type_1 type_2 type_3 period_1 period_2 period_3
1 0 1 1 0 0 1
2 0 1 1 0 1 1
3 0 1 0 0 1 0
任何对正确方向的建议将不胜感激!谢谢!
从您的DataFrame
:
>>> import pandas as pd
>>> from io import StringIO
>>> df = pd.read_csv(StringIO("""
ID type period
1 2 3
1 2 3
1 3 3
2 2 3
2 3 2
2 3 2
3 2 2"""), sep=' ')
>>> df
ID type period
0 1 2 3
1 1 2 3
2 1 3 3
3 2 2 3
4 2 3 2
5 2 3 2
6 3 2 2
我们可以groupby
在列 'ID' 和 'type' 上使用它们来提取它们size
,然后unstack
是结果,用零填充 NaN,最后将其转换为bool
and int
as you want0
和1
values :
>>> df.groupby(['ID','type']).size().unstack(fill_value=0).astype(bool).astype(int)
type 2 3
ID
1 1 1
2 1 1
3 1 0
对于period
列:
>>> df.groupby(['ID','period']).size().unstack(fill_value=0).astype(bool).astype(int)
period 2 3
ID
1 0 1
2 1 1
3 1 0
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句