gpt4 book ai didi

python - 如何创建相应的列

转载 作者:太空宇宙 更新时间:2023-11-04 07:15:54 26 4
gpt4 key购买 nike

我得到的数据是这样的:

import pandas as pd

data_dict = {'a':[5,2,4,5,3,3,1,2,3],
'name':['Jack','jon',"tom",'lazzy','mack','zack','makilo','drag','maiko']}
data_01 = pd.DataFrame(data_dict)
input:
a name
0 5 Jack
1 2 jon
2 4 tom
3 5 lazzy
4 3 mack
5 3 zack
6 1 makilo
7 2 drag
8 3 maiko

我希望输出应该有 3 列 'good','mid','poor'哪个>3,==3,<3预期输出应该是:

a name good mid poor
5 Jack 1 0 0
2 jon 0 0 1
4 tom 1 0 0
5 lazzy 1 0 0
3 mack 0 1 0
....

感谢您的帮助!

最佳答案

  • 我要使用 np.signdata_01.a - 3
    • 返回 -1什么时候< 3 , 0什么时候== 3 , 和 1什么时候> 3
  • 然后我将它们用作标签数组的索引

    labels = np.array(['mid', 'good', 'poor'])
  • 当我切片时,0映射到 'mid' , 1映射到 'good'-1映射到 'poor'

  • 最后,我使用 pd.get_dummies创建虚拟列。

labels = np.array(['mid', 'good', 'poor'])

data_01.join(pd.get_dummies(labels[np.sign(data_01.a - 3)]))

a name good mid poor
0 5 Jack 1 0 0
1 2 jon 0 0 1
2 4 tom 1 0 0
3 5 lazzy 1 0 0
4 3 mack 0 1 0
5 3 zack 0 1 0
6 1 makilo 0 0 1
7 2 drag 0 0 1
8 3 maiko 0 1 0

备选方案 1
这使用 np.eye生成虚拟列。我创建字典将假人绑定(bind)到标签并将字典传递给 pd.DataFrame.assign

dum = dict(zip(
['mid', 'good', 'poor'],
np.eye(3, dtype=int)[:, np.sign(data_01.a - 3)]
))

data_01.assign(**dum)

a name good mid poor
0 5 Jack 1 0 0
1 2 jon 0 0 1
2 4 tom 1 0 0
3 5 lazzy 1 0 0
4 3 mack 0 1 0
5 3 zack 0 1 0
6 1 makilo 0 0 1
7 2 drag 0 0 1
8 3 maiko 0 1 0

备选方案 2
我用 np.eye再次,但这次,我从头开始创建一个数据框并使用 pd.DataFrame.join将其附加到 data_01

dum = pd.DataFrame(
np.eye(3, dtype=int)[np.sign(data_01.a - 3)],
data_01.index, ['mid', 'good', 'poor']
)

data_01.join(dum)

a name mid good poor
0 5 Jack 0 1 0
1 2 jon 0 0 1
2 4 tom 0 1 0
3 5 lazzy 0 1 0
4 3 mack 1 0 0
5 3 zack 1 0 0
6 1 makilo 0 0 1
7 2 drag 0 0 1
8 3 maiko 1 0 0

关于python - 如何创建相应的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46946681/

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