Pandas 踩坑 dataframe.index.values

当对 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
=========================
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值