Как увеличить значение нового столбца, если в другом столбце данных в python найдено повторяющееся значение? - PullRequest
1 голос
/ 22 июня 2019

У меня есть CSV-файл, который выглядит следующим образом:

Timestamp  Status
1501       Normal
1501       Normal
1502       Delay
1503       Received
1504       Normal
1504       Delay
1505       Received
1506       Received
1507       Delay
1507       Received

Я хочу добавить в столбец данных новый столбец «Уведомление», который отображается как переменная счетчика и имеет приращение, когда он встречает значение «Получено» в столбце «Состояние». Я хочу, чтобы вывод был похож на:

Timestamp  Status     Notif
1501       Normal     N0
1501       Normal     N0
1502       Delay      N0
1503       Received   N1
1504       Normal     N1
1504       Delay      N1
1505       Received   N2
1506       Received   N3
1507       Delay      N3
1507       Received   N4

Я пытался найти решение этой проблемы, и различные источники предлагают кодировать с использованием пакета arcpy, но я хочу сделать это без него, так как PyCharm, похоже, не поддерживает пакет arcpy

Также пытался использовать numpy для использования в качестве условного оператора, но, похоже, это не сработало

1 Ответ

1 голос
/ 22 июня 2019

Итерируя по строкам с помощью df.iterrows, вы можете добиться следующего:

df['Notif'] = None
counter = 0
for idx, row in df.iterrows():
    if df.iloc[idx, 1] == "Received":
        counter +=1
    df.iloc[idx,-1] = "N" + str(counter)

print(df)

Выход

+----+------------+-----------+-------+
|    | Timestamp  |  Status   | Notif |
+----+------------+-----------+-------+
| 0  |      1501  | Normal    | N0    |
| 1  |      1501  | Normal    | N0    |
| 2  |      1502  | Delay     | N0    |
| 3  |      1503  | Received  | N1    |
| 4  |      1504  | Normal    | N1    |
| 5  |      1504  | Delay     | N1    |
| 6  |      1505  | Received  | N2    |
| 7  |      1506  | Received  | N3    |
| 8  |      1507  | Delay     | N3    |
| 9  |      1507  | Received  | N4    |
+----+------------+-----------+-------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...