Состояние в кадре данных - PullRequest
1 голос
/ 02 марта 2020

У меня есть фрейм данных, который содержит значения в следующем формате:

S1  S2  S3  S4  S5  
A   0   0   d   e   
A   b   0   0   0   
A   b   c   0   e   
A   b   c   d   0   
A   b   c   d   e   

Я просто хочу подсчет значений в строке, только если они присутствуют постоянно. Если изначально присутствует только одно значение, то счетчик равен нулю, но если в строке присутствуют два непрерывных значения, это два:

S1  S2  S3  S4  S5  Count
A   0   0   d   e   zero
A   b   0   0   0   two
A   b   c   0   e   three
A   b   c   d   0   four
A   b   c   d   e   five

1 Ответ

2 голосов
/ 02 марта 2020

Сначала сравните 0 значения на DataFrame.eq для равных (0 означает, что значения являются числами, если в строках используется '0'), получите совокупную сумму на DataFrame.cumsum по строкам и количество 0 значений по sum, последнее использование Series.map:

d = {0:'no value', 1:'zero', 2:'two', 3:'three', 4:'four', 5:'five'}

df['Count'] = df.eq(0).cumsum(axis=1).eq(0).sum(axis=1).map(d)
print (df)
  S1 S2 S3 S4 S5  Count
0  A  0  0  d  e   zero
1  A  b  0  0  0    two
2  A  b  c  0  e  three
3  A  b  c  d  0   four
4  A  b  c  d  e   five
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...