In [1]:
import numpy as np
import pandas as pd

In [2]:
df = pd.DataFrame(data=[[1, 2, 3], [4, 5, 6]], columns=['a', 'b', 'c'])
print(df)


   a  b  c
0  1  2  3
1  4  5  6

In [3]:
a_values = df.values
print(a_values)


[[1 2 3]
 [4 5 6]]

In [4]:
print(np.shares_memory(a_values, df))


True

In [5]:
a_values[0, 0] = 100
print(a_values)


[[100   2   3]
 [  4   5   6]]

In [6]:
print(df)


     a  b  c
0  100  2  3
1    4  5  6

In [7]:
df_if = pd.DataFrame(data=[[1, 0.1], [2, 0.2]], columns=['int', 'float'])
print(df_if)


   int  float
0    1    0.1
1    2    0.2

In [8]:
print(df_if.dtypes)


int        int64
float    float64
dtype: object

In [9]:
a_values_if = df_if.values
print(a_values_if)


[[1.  0.1]
 [2.  0.2]]

In [10]:
print(np.shares_memory(a_values_if, df_if))


False

In [11]:
a_values_if[0, 0] = 100
print(a_values_if)


[[100.    0.1]
 [  2.    0.2]]

In [12]:
print(df_if)


   int  float
0    1    0.1
1    2    0.2

In [13]:
print(df[['a', 'c']].values)


[[100   3]
 [  4   6]]

In [14]:
print(np.shares_memory(df[['a', 'c']].values, df))


False

In [15]:
print(df.iloc[:, ::2].values)


[[100   3]
 [  4   6]]

In [16]:
print(np.shares_memory(df.iloc[:, ::2].values, df))


True

In [17]:
a_values_copy = df.values.copy()
print(a_values_copy)


[[100   2   3]
 [  4   5   6]]

In [18]:
print(np.shares_memory(a_values_copy, df))


False

In [19]:
a_values_copy[0, 0] = 10
print(a_values_copy)


[[10  2  3]
 [ 4  5  6]]

In [20]:
print(df)


     a  b  c
0  100  2  3
1    4  5  6

In [21]:
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a)


[[1 2 3]
 [4 5 6]]

In [22]:
df_a = pd.DataFrame(a, columns=['a', 'b', 'c'])
print(df_a)


   a  b  c
0  1  2  3
1  4  5  6

In [23]:
print(np.shares_memory(a, df_a))


True

In [24]:
a[0, 0] = 100
print(a)


[[100   2   3]
 [  4   5   6]]

In [25]:
print(df_a)


     a  b  c
0  100  2  3
1    4  5  6

In [26]:
df_a.iat[1, 0] = 10
print(df_a)


     a  b  c
0  100  2  3
1   10  5  6

In [27]:
print(a)


[[100   2   3]
 [ 10   5   6]]

In [28]:
df_a_copy = pd.DataFrame(a.copy(), columns=['a', 'b', 'c'])
print(df_a_copy)


     a  b  c
0  100  2  3
1   10  5  6

In [29]:
a[0, 0] = 1
print(a)


[[ 1  2  3]
 [10  5  6]]

In [30]:
print(df_a_copy)


     a  b  c
0  100  2  3
1   10  5  6