gpt4 book ai didi

python - 从 python 中的现有列创建新列

转载 作者:行者123 更新时间:2023-11-30 21:53:41 25 4
gpt4 key购买 nike

我有一个看起来像这样的数据框:

data = [['A', 1, 100], ['A', 3, 100], ['A', 2, 100], ['A', 3, 100], ['A', 5, 100]]
df = pd.DataFrame(data, columns = ['?', 'Rating', 'Amount'])
    ?   Rating  Amount
0 A 1 100
1 A 3 100
2 A 2 100
3 A 3 100
4 A 5 100

我需要根据评级值替换金额创建新列 - 看起来像这样:

    ?   Rating  Amount  1   2   3   5
0 A 1 100 100 0 0 0
1 A 3 100 0 0 100 0
2 A 2 100 0 100 0 0
3 A 3 100 0 0 100 0
4 A 5 100 0 0 0 100

现在我有这个:

ratingnames = np.unique(list(df['Rating']))
ratingnames.sort()

d = pd.DataFrame(0, index=np.arange(len(df['Rating'])), columns=ratingnames)

for i in range(len(df['Rating'])):
ratingvalue = df.loc[i, 'Rating']
d.loc[i, ratingvalue] = df.loc[i, 'Amount']

df = pd.concat([df, d], axis = 1)

但我觉得它可以改进。有什么建议么?谢谢!

最佳答案

IIUC,使用get_dummies并乘以 df['Amount'], 然后 concataxis=1上:

output = pd.concat((df,pd.get_dummies(df['Rating']).mul(df['Amount'],axis=0)),axis=1)
<小时/>
   ?  Rating  Amount    1    2    3    5
0 A 1 100 100 0 0 0
1 A 3 100 0 0 100 0
2 A 2 100 0 100 0 0
3 A 3 100 0 0 100 0
4 A 5 100 0 0 0 100

时间安排: enter image description here

关于python - 从 python 中的现有列创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59581694/

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