/ / Значення даних Pandas не змінюються за межами функції - панди, кадр даних

Значення даних Pandas не змінюється за межами функції - панди, кадр даних

У мене є фрейм даних pandas всередині для циклу, де я змінюю значення у файловому діапазоні панд, як це:

df[item].ix[(e1,e2)] = 1

Однак, коли я отримую доступ до DF, значення залишаються незмінними. Ви знаєте, де саме я іду неправильно?

Будь-які пропозиції?

Відповіді:

0 для відповіді № 1

Ви використовуєте ланцюгові індексації, що зазвичай викликає проблеми. У вашому коді df[item] повертає серію, а потім .ix[(e1,e2)] = 1 змінює цю серію, залишаючи оригінальний кадр даних недоторканим. Замість цього вам потрібно змінити вихідний фрейм даних, наприклад:

import pandas as pd

df = pd.DataFrame({"colA": [5, 6, 1, 2, 3],
"colB": ["a", "b", "c", "d", "e"]})

print df
df.ix[[1, 2], "colA"] = 111
print df

Цей код встановлює рядки 1 і 2 colA до 111, що, я вважаю, саме те, що ви хотіли зробити. 1 і 2, звичайно, можуть бути замінені змінні.

   colA colB
0     5    a
1     6    b
2     1    c
3     2    d
4     3    e

colA colB
0     5    a
1   111    b
2   111    c
3     2    d
4     3    e

Для отримання додаткової інформації про інтеграцію з ланцюгом див. Документацію: https://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

Сторона примітка: ви також можете переглянути свій код у ціломуоскільки ви згадали про модифікацію кадру даних в циклі. Використовуючи панди, ви зазвичай можете і повинні уникати циклічності та використовувати засновані на операціях операції. Це вимагає певного звикання, але це спосіб розблокування повної потужності бібліотеки.