gpt4 book ai didi

python - 添加带有计数的列

转载 作者:行者123 更新时间:2023-12-01 03:34:55 25 4
gpt4 key购买 nike

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

d = {'device' : ['D1', 'D1', 'D1', 'D1', 'D1', 'D2', 'D2', 'D2', 'D2', 'D2',],
'interval' : ['Day 1', 'Day 1', 'Day 1', 'Day 2', 'Day 2', 'Day 2', 'Day 3', 'Day 3', 'Day 3', 'Day 3'],
'data' : np.random.rand(10) }

df = pd.DataFrame(d)
df.set_index(['device','interval'], inplace=True)
print(df)

data
device interval
D1 Day 1 0.087297
Day 1 0.849820
Day 1 0.577146
Day 2 0.027389
Day 2 0.469095
D2 Day 2 0.685370
Day 3 0.988979
Day 3 0.092372
Day 3 0.578315
Day 3 0.052130

我想添加一个列来计算每个设备的 inverval 出现次数。例如,我希望结果如下所示。

                   data    count
device interval
D1 Day 1 0.087297 1
Day 1 0.849820 2
Day 1 0.577146 3
Day 2 0.027389 1
Day 2 0.469095 2
D2 Day 2 0.685370 1
Day 3 0.988979 1
Day 3 0.092372 2
Day 3 0.578315 3
Day 3 0.052130 4

最佳答案

您可以通过 group 添加计数列索引级别并使用 transform应用调用 ranklambda在每个分组上使用参数 method='dense' 和 ascending=False`:

In [15]:
df['count'] = df.groupby(level=[0,1]).transform(lambda x: x.rank(method='dense', ascending=False))
df

Out[15]:
data count
device interval
D1 Day 1 0.442826 1
Day 1 0.307261 2
Day 1 0.040172 3
Day 2 0.489025 1
Day 2 0.210805 2
D2 Day 2 0.335703 1
Day 3 0.659730 1
Day 3 0.658278 2
Day 3 0.296398 3
Day 3 0.218484 4

关于python - 添加带有计数的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40474710/

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