2024-04-26 14:14:01 发布
网友
我有一个数据帧df,其中有一个整数列'X'
df = pd.DataFrame({'X': [7, 2, 0, 3, 4, 2, 5, 0, 3, 4]})
我需要为df中的每个值计算到前一个零的距离。你知道吗
因此,预期的产出将是
op = pd.DataFrame({'dist': [0 ,0, 0, 1, 2, 3, 4, 0, 1, 2]})
我能够做for循环并实现逻辑,但我想还有一种更为python的方式来做,这是我所缺少的。你知道吗
用途:
g = df['X'].eq(0).cumsum() df['dist'] = np.where(g.eq(0), 0, df.groupby(g).cumcount()) print (df) X dist 0 7 0 1 2 0 2 0 0 3 3 1 4 4 2 5 2 3 6 5 4 7 0 0 8 3 1 9 4 2
解释:
0
==
g
print (df.assign(mask = df['X'].eq(0), g = df['X'].eq(0).cumsum(), counter = df.groupby(g).cumcount(), mask1 = g.eq(0), dist = np.where(g.eq(0), 0, df.groupby(g).cumcount()))) X mask g counter mask1 dist 0 7 False 0 0 True 0 1 2 False 0 1 True 0 2 0 True 1 0 False 0 3 3 False 1 1 False 1 4 4 False 1 2 False 2 5 2 False 1 3 False 3 6 5 False 1 4 False 4 7 0 True 2 0 False 0 8 3 False 2 1 False 1 9 4 False 2 2 False 2
用途:
解释:
0
和^{==
)0
之前测试第一组g
相关问题 更多 >
编程相关推荐