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

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


[[0 1]
 [2 3]
 [4 5]]

In [3]:
df = pd.DataFrame(a)
print(df)


   0  1
0  0  1
1  2  3
2  4  5

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


True

In [5]:
print(df._is_view)


True

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


[[100   1]
 [  2   3]
 [  4   5]]

In [7]:
print(df)


     0  1
0  100  1
1    2  3
2    4  5

In [8]:
a_str = np.array([['a', 'x'], ['b', 'y'], ['c', 'z']])
print(a_str)


[['a' 'x']
 ['b' 'y']
 ['c' 'z']]

In [9]:
df_str = pd.DataFrame(a_str)
print(df_str)


   0  1
0  a  x
1  b  y
2  c  z

In [10]:
print(np.shares_memory(a_str, df_str))


False

In [11]:
print(df_str._is_view)


False

In [12]:
a_str[0, 0] = 'n'
print(a_str)


[['n' 'x']
 ['b' 'y']
 ['c' 'z']]

In [13]:
print(df_str)


   0  1
0  a  x
1  b  y
2  c  z

In [14]:
df_homo = pd.DataFrame({'a': [0, 1, 2], 'b': [3, 4, 5]})
print(df_homo)


   a  b
0  0  3
1  1  4
2  2  5

In [15]:
print(df_homo.dtypes)


a    int64
b    int64
dtype: object

In [16]:
a_homo = df_homo.values
print(a_homo)


[[0 3]
 [1 4]
 [2 5]]

In [17]:
print(np.shares_memory(a_homo, df_homo))


True

In [18]:
df_homo.iat[0, 0] = 100
print(df_homo)


     a  b
0  100  3
1    1  4
2    2  5

In [19]:
print(a_homo)


[[100   3]
 [  1   4]
 [  2   5]]

In [20]:
df_hetero = pd.DataFrame({'a': [0, 1, 2], 'b': ['x', 'y', 'z']})
print(df_hetero)


   a  b
0  0  x
1  1  y
2  2  z

In [21]:
print(df_hetero.dtypes)


a     int64
b    object
dtype: object

In [22]:
a_hetero = df_hetero.values
print(a_hetero)


[[0 'x']
 [1 'y']
 [2 'z']]

In [23]:
print(np.shares_memory(a_hetero, df_hetero))


False

In [24]:
df_hetero.iat[0, 0] = 100
print(df_hetero)


     a  b
0  100  x
1    1  y
2    2  z

In [25]:
print(a_hetero)


[[0 'x']
 [1 'y']
 [2 'z']]