huangkevin96
huangkevin96

Reputation: 1

Changing pandas dataframe by reference

I have two large DataFrames that I don't want to make copies of, but want to apply the same change to. How can I do this properly? For example, this is similar to what I want to do, but on a smaller scale. This only creates the temporary variable df that gives the result of each DataFrame, but I want both DataFrames to be themselves changed:

import pandas as pd
df1 = pd.DataFrame({'a':[1,2,3]})
df2 = pd.DataFrame({'a':[0,1,5,7]})
for df in [df1, df2]:
    df = df[df['a'] < 3]

Upvotes: 0

Views: 106

Answers (2)

Mikkel Duif
Mikkel Duif

Reputation: 28

Don't think this is the best solution, but should do the job.

import pandas as pd
df1 = pd.DataFrame({'a':[1,2,3]})
df2 = pd.DataFrame({'a':[0,1,5,7]})
dfs = [df1, df2]
for i, df in enumerate(dfs):
    dfs[i] = df[df['a'] < 3]


dfs[0]

   a
0  1
1  2

Upvotes: 0

BENY
BENY

Reputation: 323226

We can do query with inplace

df1 = pd.DataFrame({'a':[1,2,3]})
df2 = pd.DataFrame({'a':[0,1,5,7]})
for df in [df1, df2]:
    df.query('a<3',inplace=True)

df1
   a
0  1
1  2
df2
   a
0  0
1  1

Upvotes: 2

Related Questions