Как извлечь набор строк, имеющих одинаковое значение в одном столбце и противоположных во втором столбце в Python - PullRequest
0 голосов
/ 27 марта 2019

У меня есть такой фрейм данных

Дата A B Стат
1-Ян Янa начало
1-янв Ян К 0 0
1-Ян Ян Т б начало
1 Ян Н конец
1 Ян W 0 0
1 Ян Р б конец

Фактически, a и b представляют действия, которые начинаются с start и заканчиваются end значением Stat столбца.Столбец Act представляет номер активности.Я хочу создать новый фрейм данных на основе столбцов B и Stat , чтобы мои выходные данные были:

Дата A B Stat Act
1-Jan J M a start 1
1-янв Ян К 0 0 1
1-Ян Ян Т б начало 1
1 Ян Н a конец 1
1-й Ян Т b начало 2
1-й Ян и конец 2
1-янв Янв 0 0 2
1 Ян Р b конец 2

Столбец Act представляет номер активности.Любая помощь будет по достоинству оценена.

1 Ответ

0 голосов
/ 27 марта 2019

Звучит так, как будто вы ищете cumum в начале строки в столбце Stat.почти так же, как этот вопрос

cols = ["Date", "A", "B", "Stat"]
strs = ["1-jan M a start",
"1-jan K 0 0",
"1-jan T b start",
"1-jan N a end",
"1-jan W 0 0",
"1-jan R b end"
       ]

list = []
for str in strs:
    items = str.split(" ")
    list.append(items)
print(list)
df = pd.DataFrame(list, columns=cols)
df["StartCount"] = (df['Stat'] == 'start').cumsum()
print(df)

>

    Date  A  B   Stat  StartCount
0  1-jan  M  a  start           1
1  1-jan  K  0      0           1
2  1-jan  T  b  start           2
3  1-jan  N  a    end           2
4  1-jan  W  0      0           2
5  1-jan  R  b    end           2
...