99网
您的当前位置:首页python报错:ValueError: Must have equal len keys and value when setting with an iterable// .loc() .at()

python报错:ValueError: Must have equal len keys and value when setting with an iterable// .loc() .at()

来源:99网

在处理数据时,想要修改某个数据,一开始直接使用数据切片进行赋值

df['math'][0] = 100

 虽然数据修改成功了,但是这种情况代码运行时会有警告:

为了解决这个警告问题,查阅了相关资料:在python中默认的切片数据类型是“只读不能写”的,可以使用loc函数定位到的是原dataframe中的列,可修改

因此尝试loc函数

df.loc[1,'math'] = 110

 数据修改成功 且没有再报warning

完美

你以为到这就结束了嘛 天真  我后面在对数据赋值列表时,居然报报报报报报错了:

ValueError: Must have equal len keys and value when setting with an iterable

.loc 不能直接存入列表,可做如下尝试:

1.将添加的列表转化为byte数据

2.写入

3.转换回来

df.loc[0,'all'] = np.array([,100]).tobytes()
np.frombuffer(df.loc[0,'all'], dtype=int)

 但这样存在一个问题,如图,虽然最后提取结果的时候能数据转化后提取出来  但是我的原表数据还是byte类型 ,这不是我想要的 ,我想要在原表上直接就得到我想要的列表。

后来我就想,数据切片会警告,loc会报错,那么at可不可以呢,尝试一下

在使用at之前,需要先转换一下该列的数据类型,转为object

df['all'] = df['all'].astype('object')
df.at[0,'all'] = [,100]

 成功了。。。没有警告没有报错

暂时没查到原始,但是目前证明是可行的,后续找到原因继续补充,希望不会有问题

因篇幅问题不能全部显示,请点此查看更多更全内容