Python 计算数据帧中最后一个值与行末尾之间的单元格数

Python 计算数据帧中最后一个值与行末尾之间的单元格数,python,pandas,dataframe,Python,Pandas,Dataframe,我正在使用Python中的pandas库 我有一个数据框: 0 1 2 3 4 0 0 0 0 1 0 1 0 0 0 0 1 2 0 0 1 0 0 3 1 0 0 0 0 4 0 0 1 0 0 5 0 1 0 0 0 6 1 0 0 1 1 是否可以创建一个新列,该列是行末尾和最后一个大于零的值之间的空单元格数的

我正在使用Python中的pandas库

我有一个数据框:

    0   1   2   3   4

0   0   0   0   1   0

1   0   0   0   0   1

2   0   0   1   0   0

3   1   0   0   0   0

4   0   0   1   0   0

5   0   1   0   0   0

6   1   0   0   1   1
是否可以创建一个新列,该列是行末尾和最后一个大于零的值之间的空单元格数的计数?下面的数据框示例:

    0   1   2   3   4   Value

0   0   0   0   1   0   1

1   0   0   0   0   1   0

2   0   0   1   0   0   2

3   1   0   0   0   0   4

4   0   0   1   0   0   2

5   0   1   0   0   0   3

6   1   0   0   1   1   0
使用:

详细信息

列和切片的第一个更改顺序:

print (df.iloc[:, ::-1])
   4  3  2  1  0
0  0  1  0  0  0
1  1  0  0  0  0
2  0  0  1  0  0
3  0  0  0  0  1
4  0  0  1  0  0
5  0  0  0  1  0
6  1  1  0  0  1
然后通过以下方式使用每行的累积总和:

仅通过以下方式比较
1
值:

最后按
sum
对每行进行计数:

print (df.iloc[:, ::-1].cumsum(axis=1).eq(0).sum(axis=1))
0    1
1    0
2    2
3    4
4    2
5    3
6    0
dtype: int64
使用:

详细信息

列和切片的第一个更改顺序:

print (df.iloc[:, ::-1])
   4  3  2  1  0
0  0  1  0  0  0
1  1  0  0  0  0
2  0  0  1  0  0
3  0  0  0  0  1
4  0  0  1  0  0
5  0  0  0  1  0
6  1  1  0  0  1
然后通过以下方式使用每行的累积总和:

仅通过以下方式比较
1
值:

最后按
sum
对每行进行计数:

print (df.iloc[:, ::-1].cumsum(axis=1).eq(0).sum(axis=1))
0    1
1    0
2    2
3    4
4    2
5    3
6    0
dtype: int64

使用
argmax

df['value'] = df.apply(lambda x: (x.iloc[::-1] == 1).argmax(),1)

##OR
使用
np.where

df['Value'] = np.where(df.iloc[:,::-1] == 1,True,False).argmax(1)


使用
argmax

df['value'] = df.apply(lambda x: (x.iloc[::-1] == 1).argmax(),1)

##OR
使用
np.where

df['Value'] = np.where(df.iloc[:,::-1] == 1,True,False).argmax(1)


OP没有提到那个案例…还有eg每行都有一个,所以我想他希望有1个。@jezraeli发现他们更快。.另一个条件?OP没有提到那个案例…还有eg每行都有一个,所以我想他希望有1个。@jezraeli发现他们更快。.另一个条件?如果只有
0
行?这是所有列的编号,这里是
5
?感谢您的回复。0行永远不会出现。您的版本是什么?如果只有
0
行,预期输出是什么?这是所有列的编号,这里是
5
?感谢您的回复。0行永远不会出现。您的版本是什么?