DataPrame Python Pandas заменяет значение ячейки значением другой ячейки того же сеанса - PullRequest
0 голосов
/ 28 мая 2018

Я использую Python Pandas Dataframe для анализа данных некоторых журналов.У меня есть CSV с чем-то вроде: number_items event_type ... ... ... session_id ... ... ...

Моя проблема заключается в том, что в моем сеансе есть различные типы событий, итолько один из них имеет что-то для number_items.Или то, что меня интересует numbers_items.

Итак, я хочу увидеть, как каждый параметр каждого события влияет на number_items.

Итак, я хочу сделать следующее: Скопировать number_items изсобытие, которое имеет его (всегда последнее в сеансе) для всех других событий сеанса.Разделите каждый event_type в отдельном Dataframe (чтобы избежать множества нулей, которые существуют только потому, что атрибут не соответствует событию) и проанализируйте его.

Я заблокирован в первой части

Я попробовал что-то вроде этого:

currentSession = '0'
currentItems = 0
for index, row in reversed(df.iterrows()) :
    if row['session_id'] == currentSession :
        row['number_items'] = currentItems
    else : 
        currentSession = row['session_id']
        currentItems = row['number_items']

Очевидно, это не работает, я просто хотел показать идею.

Я немного новичок в Python, поэтому я был бы признателеннекоторая помощь.

Спасибо

редактировать: образец данных здесь

В целях безопасности я предоставляю только соответствующую информацию

1 Ответ

0 голосов
/ 28 мая 2018

Строки, которые вы возвращаете из iterrows, являются копиями, поэтому они не перезаписывают ваш исходный кадр данных.Используйте другую форму итератора, которая ссылается на исходный фрейм данных.

см. Здесь Обновление значения в iterrow для панд

(также я полностью уверен, что вы пытаетесьно инстинктивно это кажется очень неэффективным - я подозреваю, что существуют естественные методы панд, которые могут сделать то, что вы пытаетесь достичь в одну или две строки, найдите метод where ())

...