详解pandas赋值失败问题解决

一、pandas对整列赋值

这个比较正常,一般直接赋值就可以:

x = pd.DataFrame({\'A\': [\'1\', \'2\', \'3\', None, None],
      \'B\': [\'4\', \'5\', \'6\', \'7\', None]})
x[\'A\'] = [\'10\', \'11\', \'12\', \'13\', \'14\']

详解pandas赋值失败问题解决

二、pandas对非整列赋值

1、用单个值赋值

x = pd.DataFrame({\'A\': [\'1\', \'2\', \'3\', None, None],
      \'B\': [\'4\', \'5\', \'6\', \'7\', None]})
index = x[\'A\'].isna()
x[index][\'A\'] = 100

详解pandas赋值失败问题解决

是不是很奇怪,没有赋值成功!!

2、用多个值赋值

x = pd.DataFrame({\'A\': [\'1\', \'2\', \'3\', None, None],
      \'B\': [\'4\', \'5\', \'6\', \'7\', None]})
index = x[\'A\'].isna()
x[index] = [100, 200]

详解pandas赋值失败问题解决

报错了!!提示说,要用.loc赋值,那我们试一下。

3、.loc赋值

x = pd.DataFrame({\'A\': [\'1\', \'2\', \'3\', None, None],
      \'B\': [\'4\', \'5\', \'6\', \'7\', None]})
index = x[\'A\'].isna()
x.loc[index, [\'A\']] = [100, 200]

详解pandas赋值失败问题解决

报错,这是因为shape原因。

x.loc[index, [\'A\']] = [[\'100\'], [\'200\']]

详解pandas赋值失败问题解决

三、用数据的另外一列赋值

1、错误方式

x = pd.DataFrame({\'A\': [\'1\', \'2\', \'3\', \'\', \'\'],
        \'B\': [\'4\', \'5\', \'6\', \'7\', \'\']})
index = x[\'A\'].isna()
x.loc[index, [\'A\']] = x.loc[index, [\'B\']] 

详解pandas赋值失败问题解决

正确方式

x = pd.DataFrame({\'A\': [\'1\', \'2\', \'3\', \'\', \'\'],
        \'B\': [\'4\', \'5\', \'6\', \'7\', \'\']})
index = x[\'A\'].isna()
x.loc[index, [\'A\']] = x.loc[index, [\'B\']].copy().values.tolist()

详解pandas赋值失败问题解决

到此这篇关于详解pandas赋值失败问题解决的文章就介绍到这了,更多相关pandas赋值失败内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容