gpt4 book ai didi

python - pandas - 选择列名称并将其转换为值

转载 作者:太空宇宙 更新时间:2023-11-04 09:56:38 25 4
gpt4 key购买 nike

从这个数据框 df 开始:

df = pd.DataFrame({'id':[1,2,3,4],'a':['on','on','off','off'], 'b':['on','off','on','off']})

a b id
0 on on 1
1 on off 2
2 off on 3
3 off off 4

我想要实现的是一个列 result,其中包含列的“开”和“关”选择的结果。预期输出是:

     a    b  id result
0 on on 1 [a,b]
1 on off 2 [a]
2 off on 3 [b]
3 off off 4 []

所以基本上我必须在列中选择“on”值(id 除外),然后将生成的列名保存到列表中。我的第一次尝试是使用 pivot_table:

d = pd.pivot_table(df, index='id', columns=?, values=?)

但我仍然坚持如何将选择放入 values 并将新列放入 columns args。

最佳答案

对我来说,创建嵌套的 list,然后通过 str[0] 选择列表的第一个值:

df['res'] = df[['a','b']].eq('on').apply(lambda x: [x.index.values[x]], axis=1).str[0]
print (df)
a b id res
0 on on 1 [a, b]
1 on off 2 [a]
2 off on 3 [b]
3 off off 4 []

或者先创建元组,然后转换为list:

df['res'] = df[['a','b']].eq('on')
.apply(lambda x: tuple(x.index.values[x]), axis=1).apply(list)
print (df)
a b id res
0 on on 1 [a, b]
1 on off 2 [a]
2 off on 3 [b]
3 off off 4 []

关于python - pandas - 选择列名称并将其转换为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45547451/

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