首页 > 解决方案 > 熊猫条件选择 - 返回视图而不是副本

问题描述

我有一个原始的熊猫数据框,其中有一串对象在上面进行条件选择。每次我进行条件选择时,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(一个新对象),它的 ID 发生了变化并且df2不再连接到新df的。反正有没有按照我想要的方式做?pandas 中是否有任何方法/属性来保持原始数据框和我的条件选择之间的连接,或者我不知道的任何 Pythonic 方式?

标签: pythonpandasdataframe

解决方案


你想达到什么目的?也许它可以以不同的方式完成?

关于拥有视图而不是副本——当您选择一行或一列时,您就有了一个视图。下面的代码演示了这一点:

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)

推荐阅读