当对 dataframe.index.values 返回值进行修改时,也会影响到 dataframe 的 index。
a = pd.DataFrame(np.array(range(16)).reshape(4, 4))
print(a)
=========================
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
=========================
a_index = a.index.values
random.shuffle(a_index)
print(a_index)
print(a)
=========================
[1 0 3 2]
0 1 2 3
1 0 1 2 3
0 4 5 6 7
3 8 9 10 11
2 12 13 14 15
=========================
a_index[1] = 9
print(a_index)
print(a)
=========================
[1 9 3 2]
0 1 2 3
1 0 1 2 3
9 4 5 6 7
3 8 9 10 11
2 12 13 14 15
=========================
若只需要 index 的信息,不希望对 index 修改时会影响到 dataframe,应当用 dataframe.index.to_numpy(copy=True) 或者 dataframe.index.values.copy()
a = pd.DataFrame(np.array(range(16)).reshape(4, 4))
print(a)
=========================
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
=========================
a_index = a.index.to_numpy(copy=True)
random.shuffle(a_index)
print(a_index)
print(a)
=========================
[0 2 1 3]
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
=========================
a_index[1] = 9
print(a_index)
print(a)
=========================
[0 9 1 3]
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
=========================