gpt4 book ai didi

python - Pandas - 恢复许多热编码(虚拟变量)

转载 作者:行者123 更新时间:2023-12-01 01:33:11 26 4
gpt4 key购买 nike

假设我有以下pandas.DataFrame:

df = pd.DataFrame({'id': [1, 2, 3], 'val': [5, 5, 10],
'trig_aaa': [1, 0, 1], 'trig_bbb': [0, 1, 1], 'trig_ccc': [0, 0, 1]})
print(df)

id val trig_aaa trig_bbb trig_ccc
0 1 5 1 0 0
1 2 5 0 1 0
2 3 10 1 1 1

我想将其转换为以下 df:

   id  val             trig
0 1 5 [aaa]
1 2 5 [bbb]
2 3 10 [aaa, bbb, ccc]

Pandas/Python/Numpy 中有一个优雅的(希望是预先构建的功能)吗?

编辑1:

查看 jpps 的评论后,对 DataFrame 的更好处理如下所示:

   id  val trig
0 1 5 aaa
1 2 5 bbb
2 3 10 aaa
3 3 10 bbb
4 3 10 ccc

最佳答案

您可以使用pd.melt :

# rename columns and melt dataframe
df.columns = [i if '_' not in i else i.split('_')[1] for i in df]
res = pd.melt(df, id_vars=['id', 'val'], var_name='trig')

# filter for 1 values and sort
res = res[res['value'].eq(1)].sort_values('id').iloc[:, :-1].reset_index(drop=True)

print(res)

id val trig
0 1 5 aaa
1 2 5 bbb
2 3 10 aaa
3 3 10 bbb
4 3 10 ccc

关于python - Pandas - 恢复许多热编码(虚拟变量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52623815/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com