Python 条件选择-返回视图而不是副本
我有一个原始的熊猫数据框,它有一个对象链,在上面做条件选择。每次我进行条件选择时,pandas都会创建一个新的数据帧。换言之:Python 条件选择-返回视图而不是副本,python,pandas,dataframe,Python,Pandas,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)))
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
在上面的示例中,我想在更新
df
时更改df2
。我知道,现在因为我将变量df重新绑定到一个新的Pandas数据帧(一个新对象),它的ID发生了变化,df2
不再连接到新的df
。有没有办法按照我想要的方式去做?pandas中是否有任何方法/属性来保持原始数据帧和我的条件选择之间的连接,或者有任何我不知道的python方式?您试图实现什么?也许可以用另一种方式来完成
关于使用视图而不是副本,当您选择一行或一列时,您就拥有了一个视图。下面的代码演示了这一点:
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)