Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 条件选择-返回视图而不是副本_Python_Pandas_Dataframe - Fatal编程技术网

Python 条件选择-返回视图而不是副本

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)))

我有一个原始的熊猫数据框,它有一个对象链,在上面做条件选择。每次我进行条件选择时,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

在上面的示例中,我想在更新
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)