panda 修改行名字 报错 Index does not support mutable operations

在使用Pandas进行数据处理时遇到问题,当尝试通过`data_pd.columns = []`修改行名时,系统报错'Index does not support mutable operations'。解决方法是创建一个与原始数据长度相等的列表来赋值修改行名。另外,使用`append()`方法添加数据时,要求行名一致以实现自动扩展。

在进行panda数据操作,扩充时出现两个tricks:

  • 使用data_pd.append(),进行行扩充数据时,行名需要相同,才能实现自动扩充
  • 使用data_pd.columns= [], 修改行名时,不允许切片操作,只能按照原数据长建立一个列表赋值修改
# 遍历不同个体数据,进行数据拼接
response_pd = pd.DataFrame() #建立一个空panda
for ii in range(100, 106):
    sub = 'Sub%d'%ii
    index = np.where((np.array(filter_pd[sub+'_fg'])!=-100)&
                    (np.array(filter_pd[sub+'_frt'])!=-100))[0]
    ii=ii-100
    col_index =list(range(2, 7))+list(range(8, 20))+[23+ii*4,21+ii*4,22+ii*4]
    # 筛选指定行列数据
    temp_pd=filter_pd.iloc[index].iloc[:, col_index]
    ## 修改行名,注意这里不允许切片操作,只能按照原数据长,建立一个列表赋值
    temp_pd.columns = list(temp_pd.columns)[:-3]+['first glance', 'first RT', 'last RT']
    # 对行进行扩充,注意需要行名相同才会对应行进行数据扩充
    response_pd = response_pd.append(temp_pd,
                                ignore_index=True)
    print('table shape',response_pd.shape)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值