Guy*_*ash 3 python machine-learning pandas one-hot-encoding
我有一个带有 2 列“类型”和“符号”的熊猫数据框,如下所示
type sign
0 open A
1 open B
2 open D
3 close B
4 close D
5 open B
6 close B
7 close A
Run Code Online (Sandbox Code Playgroud)
"A" + "open" 表示事件 A 已经开始发生。"A" + "close" 表示事件 A 已经停止。当时间是一个主要问题时,我需要对其进行矢量化(该列表实际上大约有 4000 万行)。有点像单热编码,但当且仅当事件是“活动的”时,我需要“1”才能存在。例如,对于这种情况,结果应该是:
A B C D type sign
0 1 0 0 0 open A
1 1 1 0 0 open B
2 1 1 0 1 open D
3 1 0 0 1 close B
4 1 0 0 0 close D
5 1 1 0 0 open B
6 1 0 0 0 close B
7 0 0 0 0 close A
Run Code Online (Sandbox Code Playgroud)
想法?谢谢
IIUC 让做get_dummies
然后做cumsum
s=df.sign.str.get_dummies().reindex(columns=list('ABCD'),fill_value=0).\
mul(df.type.map({'open':1,'close':-1}),axis=0).cumsum()
A B C D
0 1 0 0 0
1 1 1 0 0
2 1 1 0 1
3 1 0 0 1
4 1 0 0 0
5 1 1 0 0
6 1 0 0 0
7 0 0 0 0
df=df.join(s)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
58 次 |
最近记录: |