условный выбор панд - возвращение вида, а не копии - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть оригинальный DataFrame для панд с цепочкой объектов, выполняющих условный выбор.Каждый раз, когда я делаю условный выбор, pandas создает новый фрейм данных.Другими словами:

import pandas as pd

df = pd.DataFrame(dict(A=range(3,23), B=range(5,25)))
print(id(df))

df2 = df[df['A']> 15]
print(id(df2))


df = pd.DataFrame(dict(A=range(3,43), B=range(5,45)))
print(id(df))

# output: 
139963862409288
139963862409456
139963862275296

В приведенном выше примере я хочу изменить df2 при обновлении df.Я знаю, что теперь, поскольку я перепривязываю переменную df к новому Pandas DataFrame (новый объект), его идентификатор изменяется, и df2 больше не связан с новым df.Есть ли способ сделать это так, как я хочу?Есть ли какой-либо метод / атрибут в пандах, чтобы сохранить связь между исходным Dataframe и моим условным выбором, или каким-либо Pythonic способом, о котором я не знаю?

1 Ответ

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

Чего ты пытаешься достичь?Может быть, это можно сделать по-другому?

Что касается наличия представлений вместо копий - когда вы выбираете одну строку или столбец, у вас есть представление.Код ниже демонстрирует это:

import pandas as pd

df = pd.DataFrame(dict(A=range(8,13), B=range(10,15), C=range(-3,2)))
print(df)
print('-----------')

dfa = df['A']
df2 = df.loc[2]
dfi = df.iloc[2]

dfa[2]=42
df2['B']=99
dfi['C']=-1
print(df)
print(dfa)
print(df2)
print(dfi)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...