```
import pandas as pd
import numpy as np

url = "https://raw.githubusercontent.com/PawinData/UC/SFBA/DistanceMatrix_shortestnetworks.csv"
Distance_df = pd.read_csv(url, index_col=0)

D = Distance_df.to_numpy()

```

I have a dataframe `Distance_df` and I convert it to a numpy array `D` for computation. What happens subsequently only concerns `D` and doesn't involve `Distance_df` at all. However, both `D` and `Distance_df` are altered (to the same thing) in the end. 

Although I can't figure out why `D` would change either, it's the behavior of `Distance_df`, the dataframe, that puzzles me the most. **How can it be altered when it doesn't even show up in the code?** Somehow I sense that this is not about the code but how values and objects are handled behind the scene. Can anybody explain a little bit?