Python 计算数据帧中行之间的距离
我有一个数据帧,除了一些1.0的值之外,它用零填充。对于每一行,我要计算到下一次出现1.0的距离。知道怎么做吗 输入数据帧:Python 计算数据帧中行之间的距离,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据帧,除了一些1.0的值之外,它用零填充。对于每一行,我要计算到下一次出现1.0的距离。知道怎么做吗 输入数据帧: index col1 0 0.0 1 0.0 2 0.0 3 0.0 4 1.0 5 0.0 6 0.0 7 1.0 8 0.0 预期输出数据帧: index col1 0 4.0 1 3.0 2 2.0 3 1.0 4 0.0 5 2.0 6
index col1
0 0.0
1 0.0
2 0.0
3 0.0
4 1.0
5 0.0
6 0.0
7 1.0
8 0.0
预期输出数据帧:
index col1
0 4.0
1 3.0
2 2.0
3 1.0
4 0.0
5 2.0
6 1.0
7 0.0
8 0.0
使用:
说明:
首先通过1
与以下内容进行比较:
然后通过以下方式进行交换订购:
通过以下方式创建组:
使用升序=False将组传递给,以便从后面计数:
print (df.groupby(df['col1'].eq(1).iloc[::-1].cumsum()).cumcount(ascending=False))
0 4
1 3
2 2
3 1
4 0
5 2
6 1
7 0
8 0
dtype: int64
print (df['col1'].eq(1))
0 False
1 False
2 False
3 False
4 True
5 False
6 False
7 True
8 False
Name: col1, dtype: bool
print (df['col1'].eq(1).iloc[::-1])
8 False
7 True
6 False
5 False
4 True
3 False
2 False
1 False
0 False
Name: col1, dtype: bool
print (df['col1'].eq(1).iloc[::-1].cumsum())
8 0
7 1
6 1
5 1
4 2
3 2
2 2
1 2
0 2
Name: col1, dtype: int32
print (df.groupby(df['col1'].eq(1).iloc[::-1].cumsum()).cumcount(ascending=False))
0 4
1 3
2 2
3 1
4 0
5 2
6 1
7 0
8 0
dtype: int64