Bug小能手系列(python)_14: pd.concat得到的矩阵错误

这篇具有很好参考价值的文章主要介绍了Bug小能手系列(python)_14: pd.concat得到的矩阵错误。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0 引言

今天在运行pd.concat (pd指的是pandas库),需要将两个DataFrame数据(数据分别为5*4的矩阵)进行列合并时,突然发现得到的矩阵是10*8的,而不是我想要的5*8的!!!虽然是个小问题,但是感觉网上给出的内容一直没把这个问题介绍清楚,这里就专门写一篇文章帮助大家理解这个问题,希望大家可以清晰地理解这个问题。运行得到的矩阵数据的图片如下:
Bug小能手系列(python)_14: pd.concat得到的矩阵错误,bug,python,矩阵
运行代码的如下:

data = pd.concat([data_0, data_1], axis=1)
# 或者是下面这样 得到的结果是一样的  
# 下面这样结果更不好  会消掉你的索引
data = pd.concat([data_0, data_1], axis=1, ignore_index=True)

可以看到矩阵中有很多nan的数值,初步分析是存在空缺值,排查后发现没有!!
然后,怀疑是两个数据冲突导致的,但是数据为什么会冲突呢? 根本没有什么区别呀?
最后,经过仔细分析后发现是:行号冲突!!!

1 错误原因

其实错误原因很简单:前面5行数据的行号和后面5行的行号不一样,所以使用concat连接的时候不会列直接连接,所以导致最终是个10*8的矩阵。

2 解决思路

按照上面的原因,只要将行号重置一下,那样的话不就可以正常连接了嘛?!
没错,解决思路就是将行号重置!!!

这里简要介绍一下所用的函数:reset_index

  • level: 控制哪些层次的索引需要被重置,默认为 None,表示所有层次的索引都会被重置。
  • drop: 如果为 True,将重置的索引从列中删除,默认为 False。
  • inplace: 如果为 True,将在原地修改对象,并返回 None。如果为 False,将返回一个新的带有重置索引的对象,默认为 False。
  • col_level: 如果索引是多层次的,指定将哪个层次的索引重置为列,默认为 0。
  • col_fill: 如果指定了 col_level,可以用来指定新列的名称

注意:这里没有明确说到底哪个是重置行号的,但是有个原地修改对象,这个可以直接将行号重置!!!
原来的data_1:
Bug小能手系列(python)_14: pd.concat得到的矩阵错误,bug,python,矩阵
使用了代码:

# 这里注意drop=True  这个也是要加的 不然你的行号会变成一个单独的列 
# 有兴趣的可以测试一下
data_1.reset_index(drop=True, inplace=True)

重置后的data_1:
Bug小能手系列(python)_14: pd.concat得到的矩阵错误,bug,python,矩阵

3 具体代码

下面是使用zeros矩阵生成的数据,跟真实数据本质是一样的。示例代码如下(大家可以测试一下上面说的问题 以及解决方案):

data_df = np.DataFrame(np.zeros([100,4]))
for i in range(len(data_df)//10):
	data_0 = data_df.iloc[i*5:(i+1)*5,:]
	data_1 = data_df.iloc[start_ind+i*5:start_ind+(i+1)*5, :]
	# 很少有人重置这里   这是因为第一遍的时候 data_0的索引就是0-4 所以不用重置
	# 但是第二遍的时候索引就不是了  所以在我们的代码里这个部分需要重置
	data_0.reset_index(drop=True,inplace=True)
	data_1.reset_index(drop=True, inplace=True)
	data = pd.concat([data_0, data_1],axis=1)

第1轮的data_0:
Bug小能手系列(python)_14: pd.concat得到的矩阵错误,bug,python,矩阵
第2轮的data_0:
Bug小能手系列(python)_14: pd.concat得到的矩阵错误,bug,python,矩阵

4 总结

总的而言,感觉出现concat得到矩阵错误主要是因为行号的问题。如果大家有什么问题的话可以评论留言,这边会根据最新的内容进行更新!!!

如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦😄。文章来源地址https://www.toymoban.com/news/detail-796030.html

到了这里,关于Bug小能手系列(python)_14: pd.concat得到的矩阵错误的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python使用pd.read_csv(),出现错误UnicodeDecodeError: ‘utf-8‘ codec can‘t decode ......

    首先说一下这个原因, 所读取的csv文件的编码方式不是utf-8,然后现在指定encoding=\\\"UTF-8\\\"会出现以上问题。 一、查看你的csv文件时什么编码方式 使用 记事本 打开csv文件,红框所示即csv文件的编码方式。 现在你的csv文件的编码格式就是\\\"ANSI\\\",这时候再去指定encoding=\\\"UTF-8\\\",就会

    2024年02月15日
    浏览(51)
  • 造轮子系列】面试官问:你能手写Vuex吗(一)?

    前后端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库  web前端面试题库 VS java后端面试题库大全 Vuex 是 Vue.js 的状态管理模式,它主要解决了组件之间共享状态时的问题。在本文中,我们将实现一个简单的状态管理器,来帮助我们更好地理解 Vuex 的实现原理

    2024年02月03日
    浏览(42)
  • Python 安装 包时 VC 14 找不到错误终极解决办法

    python setup.py bdist_wheel did not run successfully. 修改源码:M:worktoolPython39x64Libsite-packagessetuptoolsmsvc.py 中 函数 def _msvc14_find_vc2017(): 下代码:     try:         path = subprocess.check_output([             join(root, \\\"Microsoft Visual Studio\\\", \\\"Installer\\\", \\\"vswhere.exe\\\"),             \\\"-latest\\\",        

    2024年02月07日
    浏览(44)
  • 【报Bug】同步资源失败,未得到同步资源的授权,请停止运行后重新运行,并注意手机上的授权提示

    bug截图   场景描述 一开始正常编译运行,由于我觉得应用页面有些许奇怪的bug,边想着卸载,重新运行安装调试基座。卸载后,运行还是会出现 ,明明我已经把应用卸载了,还是会出现这种情况,后来各种百度红色字体的报错,没有寻得能够解决的方案。   解决方式 我还

    2024年02月13日
    浏览(37)
  • 【Python】好用的办公能手:利用OCR进行PDF文档解析(附教程)

    OCR (Optical Character Recognition,光学字符识别)是通过计算机视觉对图像中的文本进行检测和提取的过程。它是在第一次世界大战期间发明的,当时以色列科学家伊曼纽尔·戈德堡(Emanuel Goldberg)发明了一台能读取字符并将其转换为电报代码的机器。到了现在该领域已经达到了一个非

    2024年02月15日
    浏览(43)
  • TCGA_联合GTEx分析1_得到表达矩阵.tpm

    一、下载数据 共要下载 三个数据 ,分别为 表达矩阵、样本信息、注释信息 进入网站:UCSC Xena 点击 “Launch Xena” ,选择 “DATA SETs” 点击 “GTEX(11 datasets)” 下载框中的两个数据,上面一个是 表达矩阵 ,下面一个是 样本信息。 还差一个 注释信息 ,下载地址:https://to

    2023年04月17日
    浏览(34)
  • 离散数学---判断矩阵:自反性,反自反性,对称性得到矩阵的自反闭包,对称闭包。

    目录 1-自反性,反自反性,对称性 2--矩阵的自反闭包,对称闭包 题目:从键盘输入集合A的元素值,键盘输入A到A 关系矩阵M。 判断该关系矩阵M是否具有 (1)自反性、 (2)反自反性、 (3)对称性、 输出以上各性质的判定结果。       那么对于这个程序的执行,我们想法是

    2024年01月20日
    浏览(40)
  • ansible:如何在centos 7上重新启动auditd服务得到关于依赖的错误

    在我的剧本中,我有一个更新 audit.rules 的任务,然后通知应该重新启动 auditd 服务的处理程序。 当 playbook 运行时,会更新审计规则并请求重新启动 auditd,但这会失败,如下所示。 当我查看auditd 的单元定义时,我可以看到rejectManualStop=yes。这就是我无法重新启动服务的原因吗

    2024年02月02日
    浏览(48)
  • TEC2083BS-PD码转换器(解决博世矩阵控制PELCO派尔高球机的问题)

    TEC2083BS-PD码转换器 使用说明 1.设备概述 控制码转换器在安防工程中起着非常重要的角色,随着高速球型摄像机在安防工程中大范围的使用,而高速球厂家都因为某些原因很少使用博世、飞利浦的协议。为此,工程商经常会遇到博世协议和PELCO协议之间的转换,这就需要用到控

    2024年02月13日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包