Pandas中DataFrame数据删除详情

目录
  • 1.根据默认的行列索引操作
    • 1.1行删除
    • 1.2列删除
  • 2.根据自定义的行列索引操作
    • 2.1行删除
    • 2.2列删除

本文介绍PandasDataFrame数据删除,主要使用dropdel方式。

# drop函数的参数解释
drop(
        self,
        labels=None, # 就是要删除的行列的标签,用列表给定;
        axis=0, # axis是指处哪一个轴,0为行(默认),1为列;
        index=None, # index是指某一行或者多行
        columns=None, # columns是指某一列或者多列
        level=None, # level是指等级,针对多重索引的情况;
        inplace=False, # inplaces是否替换原来的dataframe;
        errors="raise",
)
axis=0或者 和 index或columns 指定行列只需要使用一组就行

1.根据默认的行列索引操作

示例数据

import numpy as np
import pandas as pd
# 生成随机数组-5行5列
df = pd.DataFrame(np.random.rand(5,5))
print(df)

数据展示

          0         1         2         3         4
0  0.760489  0.074633  0.788416  0.087612  0.560539
1  0.758450  0.599777  0.384075  0.525483  0.628910
2  0.386808  0.148106  0.742207  0.452627  0.775963
3  0.662909  0.134640  0.186186  0.735429  0.459556
4  0.328694  0.269088  0.331404  0.835388  0.899107

1.1行删除

[1]删除单行

# 删除单行,删除第2行
df.drop(df.index[1],inplace=True) # inplace=True 原地修改
print(df)

执行结果:

0         1         2         3         4
0  0.605764  0.234973  0.566346  0.598105  0.478153
2  0.383230  0.822174  0.228855  0.743258  0.076701
3  0.875287  0.576668  0.176982  0.341827  0.112582
4  0.205425  0.898544  0.799174  0.000905  0.377990

[2]删除不连续多行

# 删除不连续多行,删除第2和第4行
df.drop(df.index[[1,3]],inplace=True)
print(df)

执行结果:

0         1         2         3         4
0  0.978612  0.556539  0.781362  0.547527  0.706686
2  0.845822  0.321716  0.444176  0.053915  0.296631
4  0.617735  0.040859  0.129235  0.525116  0.005357

[3]删除连续多行

# 删除连续多行
df.drop(df.index[1:3],inplace=True) # 开区间,最后一个索引号不计算在内
print(df)

执行结果:

0         1         2         3         4
0  0.072891  0.926297  0.882265  0.971368  0.567840
3  0.163212  0.546069  0.360990  0.494274  0.065744
4  0.752917  0.242112  0.526675  0.918713  0.320725

1.2列删除

列的删除可以使用deldrop两种方式,del df[1] # 删除第2列,该种方式为原地删除,本文具体讲解drop函数删除。

[1]删除指定列

df.drop([1,3],axis=1,inplace=True) # 指定轴为列
# df.drop(columns=[1,3],inplace=True) # 直接指定列

执行结果:

0         2         4
0  0.592869  0.123369  0.815126
1  0.127064  0.093994  0.332790
2  0.411560  0.118753  0.143854
3  0.965317  0.267740  0.349927
4  0.688604  0.699658  0.932645

[2]删除连续列

df.drop(df.columns[1:3],axis=1,inplace=True) #指定轴
# df.drop(columns=df.columns[1:3],inplace = True) # 指定列
print(df)

执行结果:

0         3         4
0  0.309674  0.974694  0.660285
1  0.677328  0.969440  0.953452
2  0.954114  0.953569  0.959771
3  0.365643  0.417065  0.951372
4  0.733081  0.880914  0.804032

2.根据自定义的行列索引操作

示例数据

df = pd.DataFrame(data=np.random.rand(5,5))
df.index = list('abcde')
df.columns = list('一二三四五')
print(df)

数据展示

          一         二         三         四         五
a  0.188495  0.574422  0.530326  0.842489  0.474946
b  0.912522  0.982093  0.964031  0.498638  0.826693
c  0.580789  0.013957  0.515229  0.795052  0.859267
d  0.540641  0.865602  0.305256  0.552566  0.754791
e  0.375407  0.236118  0.129210  0.711744  0.067356

2.1行删除

[1]删除单行

df.drop(['b'],inplace=True)
print(df)

执行结果:

一         二         三         四         五
a  0.306350  0.622067  0.030573  0.490563  0.009987
c  0.672423  0.071661  0.274529  0.400086  0.263024
d  0.654204  0.809087  0.066099  0.167290  0.534452
e  0.628917  0.232629  0.070167  0.469962  0.957898

[2]删除多行

df.drop(['b','d'],inplace=True)
print(df)

执行结果:

一         二         三         四         五
a  0.391583  0.509862  0.924634  0.466563  0.058414
c  0.802016  0.621347  0.659215  0.575728  0.935811
e  0.223372  0.286116  0.130587  0.113544  0.910859

2.2列删除

[1]删除单列

df.drop(['二'],axis=1,inplace=True)# 删除单列
print(df)

执行结果:

一         三         四         五
a  0.276147  0.797404  0.184472  0.081162
b  0.630190  0.328055  0.428668  0.168491
c  0.979958  0.029032  0.934626  0.106805
d  0.762995  0.003134  0.136252  0.317423
e  0.137211  0.116607  0.367742  0.840080

[2]删除多列

df.drop(['二','四'],axis=1,inplace=True) # 删除多列
# df.drop(columns=['二','四'],inplace=True) # 删除多列
print(df)

执行结果:

一         三         五
a  0.665647  0.709243  0.019711
b  0.920729  0.995913  0.490998
c  0.352816  0.185802  0.406174
d  0.136414  0.563546  0.762806
e  0.259710  0.775422  0.794880

到此这篇关于PandasDataFrame数据删除详情的文章就介绍到这了,更多相关PandasDataFrame数据删除 原创内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 教你漂亮打印Pandas DataFrames和Series

    一.前言 当我们必须处理可能有多个列和行的大型DataFrames时,能够以可读格式显示数据是很重要的.这在调试代码时非常有用. 默认情况下,当打印出DataFrame且具有相当多的列时,仅列的子集显示到标准输出. 显示的列甚至可以多行打印出来. 二.问题 假设我们有以下DataFrame: import pandas as pd import numpy as np df = pd.DataFrame( np.random.randint(0, 100, size=(100, 25)), co

  • Pandas实现Dataframe的合并

    目录 简介 使用concat 使用append 使用merge 使用join 覆盖数据 简介 Pandas提供了很多合并Series和Dataframe的强大的功能,通过这些功能可以方便的进行数据分析.本文将会详细讲解如何使用Pandas来合并Series和Dataframe. 使用concat concat是最常用的合并DF的方法,先看下concat的定义: pd.concat(objs, axis=0, join='outer', ignore_index=False, keys=None,

  • 使用pandas忽略行列索引,纵向拼接多个dataframe

    从wind上面搞到一批股票数据后发现:本来是一个类型的数据,但是由于季度不同,列名也不同,导致使用pandas合并多个报表的时候总是出现一大堆NaN,所以这里我写了一个函数,专门针对这样的表 它的思路是: 生成一堆单词,然后把这些表的列索引全部替换为这些单词,然后调用 pd.concat() 把这些dataframe全部合并后再把列索引改回来,当然,这里也可以手动指定列索引. 使用方法见代码的最后一行,传入一个dataframe的list就可以了. import pandas as pd fro

  • Pandas中DataFrame交换列顺序的方法实现

    一.获取DataFrame列标签 import pandas as pd file_path = '/Users/Arithmetic/da-rnn-master/data/collectd67_power_after_test_smooth.csv' dataset = pd.read_csv(file_path) cols = list(dataset) ['ps_state-stopped', 'ps_state-running', 'ps_state-blocked', 'ps_stat

  • Pandas实现Dataframe的重排和旋转

    目录 简介 使用Pivot 使用Stack 使用melt 使用Pivot tables 使用crosstab get_dummies 简介 使用Pandas的pivot方法可以将DF进行旋转变换,本文将会详细讲解pivot的秘密. 使用Pivot pivot用来重组DF,使用指定的index,columns和values来对现有的DF进行重构. 看一个Pivot的例子: 通过pivot变化,新的DF使用foo中的值作为index,使用bar的值作为columns,zoo作为对应的value. 再

  • Pandas.DataFrame转置的实现 原创

    简述 Motivation sometimes,换一种获取数据的方式,可以提高数据获取的速度. sometimes,由于预计爬取的数据长度不确定,只能这么先存储起来. sometimes,有个给你的数据就是这样,但是没办法很方便的使用 - 这些情况下,你可能就会需要遇到DataFrame行列转置的方法. Contribution 提供了Pandas.DataFrame的行列转置的方法 实验部分 导入包 >>> import pandas as pd 创建数据 >>> d

  • 详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据

    pandas的DataFrame对象,本质上是二维矩阵,跟常规二维矩阵的差别在于前者额外指定了每一行和每一列的名称.这样内部数据抽取既可以用"行列名称(对应.loc[]方法)",也可以用"矩阵下标(对应.iloc[]方法)"两种方式进行. 下面具体说明: (以下程序均在Jupyter notebook中进行,部分语句的print()函数省略) 首先生成一个DataFrame对象: import pandas as pd score = [[34,67,87],[68

  • pandas中DataFrame检测重复值的实现

    本文详解如何使用pandas查看dataframe的重复数据,判断是否重复,以及如何去重 DataFrame.duplicated(subset=None, keep='first') subset:如果你认为几个字段重复,则数据重复,就把那几个字段以列表形式放到subset后面.默认是所有字段重复为重复数据. keep: 默认为'first' ,也就是如果有重复数据,则第一条出现的定义为False,后面的重复数据为True. 如果为'last',也就是如果有重复数据,则最后一条出现的定义为Fa

  • Pandas DataFrame求差集的示例代码

    在Pandas中 求差集没有专门的函数.处理办法就是将两个DataFrame追加合并,然后去重. divident.append(hasThisYearDivident) noHasThisYearDivident = divident.drop_duplicates(subset='ts_code', keep=False, inplace=True, ignore_index=True) 具体函数用法: https://pandas.pydata.org/pandas-docs/stable

  • Pandas中两个dataframe的交集和差集的示例代码

    创建测试数据: import pandas as pd import numpy as np #Create a DataFrame df1 = { 'Subject':['semester1','semester2','semester3','semester4','semester1', 'semester2','semester3'], 'Score':[62,47,55,74,31,77,85]} df2 = { 'Subject':['semester1','semester2','s

  • 浅谈pandas dataframe对除数是零的处理

    如下例 data2['营业成本率'] = data2['营业成本本年累计']/data2['营业收入本年累计']*100 但有营业收入本年累计为0的情况, 则营业成本率为inf,即无穷大,而需要在表中体现为零,用如下方法填充: data2['营业成本率'] = data2['营业成本本年累计']/data2['营业收入本年累计']*100 data2['营业成本率'].replace([np.inf, -np.inf, "", np.nan], 0, inplace=True) 当然,

  • pandas中DataFrame数据合并连接(merge、join、concat)

    pandas作者Wes McKinney 在[PYTHON FOR DATA ANALYSIS]中对pandas的方方面面都有了一个权威简明的入门级的介绍,但在实际使用过程中,我发现书中的内容还只是冰山一角.谈到pandas数据的行更新.表合并等操作,一般用到的方法有concat.join.merge.但这三种方法对于很多新手来说,都不太好分清使用的场合与用途.今天就pandas官网中关于数据合并和重述的章节做个使用方法的总结. 文中代码块主要有pandas官网教程提供. 1 concat co

随机推荐