Python-pandas返回重复数据的index问题

 更新时间:2024年02月20日 15:05:06   作者:Vergil_Zsh  
这篇文章主要介绍了Python-pandas返回重复数据的index问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

在处理数据的时候,会出先相同的列或者行,我们需要有时候需要对其中一列或者其中一行进行操作

因为数据清洗的过程会碰到多种情况

下面是我碰到的一种情况

既有合并的又有空列

使用pandas进行读取后

现在需要以第一行作为列名,然后去掉NaN的列

读取数据的时候,在pd.read_excel()中可以添加参数header=None这个参数 默认没有头列

代码如下

import pandas as pd
data = pd.read_excel('test.xlsx',header=None)

接下来处理为NaN的列

因为pandas读取NaN只能判断出状态,并不能作为选择,这里需要转变一个想法,我常用的是转换为True or False,刚好pandas里面有自带的函数,代码如下:

使用notna()函数

# 因为都进来的数据,我们需要的列名还是在第一行,固我们取第一行的所有
judge_nan_col = data.iloc[1,:].notna().tolist()
print(judge_nan_col)

tolist()是方便我们取index 

接下来是关键的部分了,因为有多个False,所以如果按照我们之前的list.index()这种是不可取的 

这里我以为大家演示下

返回的同一个索引,默认是第一次出现的,所以这个方法是不可取的

这里有多个方法

1.使用list.index()方法

需要使用count()函数进行计数

count = judge_nan_col.count(False)
index_list = []
index = -1

# 通过list.index()方法的__start参数,指定起始索引
for i in range(0, count):
	index = judge_nan_col.index(False, index + 1)
	index_list.append(index)
print(index_list)

2.通过索引遍历原列表,对每个元素进行判断

list_len = len(judge_nan_col)
index_list = []
for i in range(0, list_len):
    if judge_nan_col[i] == False:
        index_list.append(i)
print(index_list)

3.使用enumerate()函数

index_list = [i for i, col in enumerate(judge_nan_col) if col == False]
print(index_list)

目前我能想到的就这三种了

获取到我们想要的列了,并且存到了列表中,这下就是进行删除了 

pandas自带函数drop()就可以尽心行或列的删除

# 可以根据需要看删除哪一列,我这里是全部进行删除
data = data.drop(index_list,axis=1)
print(data)

现在离目标很近了,就差第一行了,还是一样,使用data.iloc()函数,重新构建dataframe

# 获取列名
columns = data.iloc[1,:].tolist()
print('columns: ',columns,'\n')
print('=================================')
data = data.iloc[1:,:]
data.columns=columns
print(data)

输出到excel

data.to_excel('complete.xlsx',index=False)

处理行,同上 不过删除的时候

需要将data = data.drop(axis=0) 

axis=1 转换为 axis=0

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python 短视频爬虫教程

    Python 短视频爬虫教程

    今天给大家带来一篇爬虫小教程,很简单的几十行代码就可以实现了,爬取的目标是短视频,感兴趣的同学快来跟着小编往下看吧
    2021-11-11
  • Python 实现使用dict 创建二维数据、DataFrame

    Python 实现使用dict 创建二维数据、DataFrame

    下面小编就为大家分享一篇Python 实现使用dict 创建二维数据、DataFrame,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python调用C/C++的方法解析

    Python调用C/C++的方法解析

    这篇文章主要介绍了Python调用C/C++的方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 基于Python实现经典植物大战僵尸游戏

    基于Python实现经典植物大战僵尸游戏

    这篇文章主要介绍了如何利用Python实现植物大战僵尸游戏,文中有非常详细的代码示例,对正在学习python的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2022-05-05
  • Python3 循环语句(for、while、break、range等)

    Python3 循环语句(for、while、break、range等)

    这篇文章主要介绍了Python3 循环语句(for、while、break、range等),大家把下面的文章看完就基本上就可以了解了python的循环实现方式了
    2017-11-11
  • python 自动化办公之批量修改文件名实操

    python 自动化办公之批量修改文件名实操

    这篇文章主要介绍了python 自动化办公之批量修改文件名实操,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • python实现将一维列表转换为多维列表(numpy+reshape)

    python实现将一维列表转换为多维列表(numpy+reshape)

    今天小编就为大家分享一篇python实现将一维列表转换为多维列表(numpy+reshape),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Python发送邮件封装实现过程详解

    Python发送邮件封装实现过程详解

    这篇文章主要介绍了Python发送邮件封装实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Python中获取对象信息的方法

    Python中获取对象信息的方法

    这篇文章主要介绍了Python中获取对象信息的方法,是Python学习当中的基础知识,需要的朋友可以参考下
    2015-04-04
  • python 面向对象之class和封装

    python 面向对象之class和封装

    这篇文章主要为大家介绍了python class和封装,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12

最新评论