gpt4 book ai didi

python - Pandas 数据框中的新变量计算连续值

转载 作者:太空宇宙 更新时间:2023-11-03 13:55:52 25 4
gpt4 key购买 nike

我有一个 Pandas 数据框(从 excel 导入),由 2 个变量组成,f 只是一个数字另一个是 bool 值,表示数字是否超出范围

我想创建一个新变量来计算连续的 TRUE 值。

我在网上看了一点,我认为新变量可以使用连续计数,但我不确定如何将它实现到这个数据框中

最终的数据框应该是这样的

f   outrange  count
1 F 0
2 F 0
3 T 1
4 T 2
1 F 0
3 T 1
2 F 0
3 T 1
4 T 2

我是 python 的新手,如果问题措辞不正确,我深表歉意

最佳答案

使用向量化解决方案替换 T 值:

a = df['outrange'] == 'T'
#if values are boolean True
#a = df['outrange']
b = a.cumsum()
df['count_new'] = b-b.where(~a).ffill().fillna(0).astype(int)
print (df)
f outrange count count_new
0 1 F 0 0
1 2 F 0 0
2 3 T 1 1
3 4 T 2 2
4 1 F 0 0
5 3 T 1 1
6 2 F 0 0
7 3 T 1 1
8 4 T 2 2

性能:

#90k
df = pd.concat([df] * 10000, ignore_index=True)

In [183]: %%timeit
...: a = df['outrange'] == 'T'
...: b = a.cumsum()
...: df['count_new'] = b-b.where(~a).ffill().fillna(0).astype(int)
...:
7.83 ms ± 28.3 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [184]: %%timeit
...: df['B'] = df['outrange'].apply(conditional_cumulative_sum)
...:
35.9 ms ± 295 µs p

关于python - Pandas 数据框中的新变量计算连续值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55742177/

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