gpt4 book ai didi

python - 基于一列大小的新列

转载 作者:行者123 更新时间:2023-11-28 22:44:14 26 4
gpt4 key购买 nike

我正在尝试为我当前的数据框创建一个新列 'score/id.size'

np.random.seed(1234)
test = pd.DataFrame({'id':np.random.randint(1,5,10),
'score':np.random.uniform(0,1,10)})

test = test.sort(['id'])

test
id score
4 1 0.875933
5 1 0.357817
6 1 0.500995
3 2 0.958139
7 2 0.683463
9 2 0.370251
2 3 0.801872
0 4 0.272593
1 4 0.276464
8 4 0.712702

我希望我的新数据框是这样的:

   id     score       score/id.size
4 1 0.875933 0.875933 / 3
5 1 0.357817 0.357817 / 3
6 1 0.500995 0.500995 / 3
3 2 0.958139 0.958139 / 3
7 2 0.683463 0.683463 / 3
9 2 0.370251 0.370251 / 3
2 3 0.801872 0.801872 / 1
0 4 0.272593 0.272593 / 3
1 4 0.276464 0.276464 / 3
8 4 0.712702 0.712702 / 3

对不起,如果这个问题太基础了,我是 Python 新手。

谢谢!

最佳答案

我认为这个答案比已经发布的一些答案更好地利用了 panda 的自动分组和对齐功能,只需按组的大小进行分组和划分:

test['score_normalized'] = test.groupby('id', group_keys=False).apply(
lambda g: g['score'] / len(g)
)

test
Out[9]:
id score score_normalized
4 1 0.875933 0.291978
5 1 0.357817 0.119272
6 1 0.500995 0.166998
3 2 0.958139 0.319380
7 2 0.683463 0.227821
9 2 0.370251 0.123417
2 3 0.801872 0.801872
0 4 0.272593 0.090864
1 4 0.276464 0.092155
8 4 0.712702 0.237567

关于python - 基于一列大小的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29762601/

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