python如何读取excel里面某一整列内容并修改

python如何读取excel里面某一整列内容并修改,第1张

Pandas中有两种方式可以进行特定行列的选取,一种是在知道每一列的名称(label)的情况下(dfloc),一种是在只知道列的位置(integer-location)的情况下(dfiloc)。

可以看出,上述的冒号(:)意味着选取所有的行,所以只需在此处进行改动即可选取特定行(前开后闭)

同样在选取特定行的时候,依然存在基于label或者是基于integer-location的选择

选取行采用dfiloc方式,具体如下

除此之外,在采用非标签的方式选择的时候,可以通过输入布尔型变量进行筛选,比如 dfiloc[[True, False, True]] ,或者是 dfiloc[lambda x: xindex % 2 == 0]

完结撒花,反正知道了dfloc和dfiloc的差别之后自由组合就好了~

参考资料:

>

注:《利用python进行数据分析》的学习笔记-pandas

import pandas as pd

import numpy as np

一维数组,包含一个数组对象,一个索引对象,索引对象默认为0开始的递增数字,可通过index=[idx1, idx2, ]参数指定

可通过索引选取/修改相应的数据,选取:data=series[idx], 修改:series[[idxm, idxn, ]]=[dm, dn, ]

series可看成定长有序字典,索引到数据的映射,series可用于字典参数的函数中。idxn in series返回True/False

多个series做算术 *** 作,会自动对齐不同索引的数据,无此数据自动填充NaN

可看作多个series组成的表单,dataframe有两种索引,与series相同的index行索引,还有columns列索引

选取/修改一行数据    dataframeloc['index']

选取/修改一列数据    dataframe['column'], dataframecolumn

objreindex(newIndex)                                                                                                    #适用于series与dataframe

objreindex(index=newIndex, columns=newcolumns)                                                    #dataframe需对行索引列索引都重新索引时

objreindex(index=newindex, columns=newcolumns, fill_value=100)                            #指定填充值,不指定时填充NaN

objreindex(index=newindex, columns=newcolumns, fill_value=100, method='ffill')      #指定填充方法ffill/pad(前向填充),bfill/backfill(后向填充)

obj=objdrop(index, axis=0)

obj=objdrop([col1, col2, ], axis=1)

axis默认为0,删除列数据时指定axis为1

series

obj = pdSeries(range(5), index=list('abcde'))

取单数            obj[2],      obj['c']

切片取数        obj[2:5],    obj['a':'c']

不连续取数    obj[1,3],    obj['a','c','d']

过滤               obj[obj>2],

修改               obj[3]=0,

注:series切片不用于python数据结构的切片,series的切片包含末端,即python:[start, end), series:[start, end]

dataframe

obj = pdDataFrame(nparange(15)reshape((3,5)),

                        index = ['one', 'two', 'three'],

                        columns = list('abcde') )

取单列             objloc[:, 'c'],                             objiloc[:, 2],                            objxs('c', axis=1),                       obj['c'], 

取单行             objloc['one'],                            objiloc[1],                               objxs('one', axis=0), 

取连续行         objloc['one':'three'],                  objiloc[1:3],                obj[:2], 

取连续列         objloc[:, 'b':'d'],                         objiloc[:, 2:4],

取不连续行     objloc[['one','three']]                 objiloc[[0,2]],

取不连续列     objloc[:, ['b', 'e']]                       objiloc[:, [1,4]],

取单行单列     objloc['two', 'd']                         objiloc[2, 4]

取连续行列     objloc['one':'three', 'b':'d']          objiloc[:2, 2:4]

取不连续行列  objloc[['one','three'], ['b':'d']]     objiloc[[0,2], [1,4]]

根据列值过滤行      objloc[obj['c']%2==0, :]      

此处吐个槽,这个切片方法一会儿只能取单列,一会儿只能取连续行,一会儿包含终止项,一会儿不包含,我人都傻了

loc/iloc方法接收两个参数,第一个是行,第二个是列,都可切片,也都可指定索引,列参数可以不写,默认取所有列数据

下面总结下这个花哨的切片!

dataframe有两种索引,行索引/列索引。每种索引包含两类用法,索引名称(对应dfloc)/索引下标对应(dfiloc)

①    df[columnName]                                             取单列数据,只能用列名,不能使用列下标,不能用于取单行

②    df[lineName1: lineName2]                              取连续行数据,使用行名时,包含末尾项,即[start,end]

③    df[lineIndex1: lineIndex2]                                取连续行数据,使用行下标时,不包含末尾项 ,即[start,end)

④    dfloc['line2':'line4']                                          取连续行数据,使用行名时,包含末尾项,即[start,end]      

⑤    dfiloc[2:4]                                                       取连续行数据,使用行下标时,不包含末尾项 ,即[start,end) 

⑥    dfloc[:, columnName1:columnName2]          取连续列,使用列名时,包含末尾项,即[start,end]    

⑦    dfiloc[:, columnIndex1:columnIndex2]           取连续列,使用列下标时,不包含末尾项,即[start,end)

⑧    dfloc[[lineName1, ], [columnName1, ]]    使用行名/列名取不连续行列

⑨    dfiloc[[lineIndex1, ], [columnIndex1, ]]     使用行下标/列下标取不连续行列

以前用的时候总觉得奇奇怪怪的,花了一下午时间一个一个尝试终于捋顺了,欧耶! (〃 ̄︶ ̄) 人 ( ̄︶ ̄〃)

DataFrame直接切片,即df[args],可用于指定列名取单列数据,可用于指定行名/行下标取连续多行数据

                                                        取单行数据不可直接切片,需使用loc/iloc方法

DataFrameloc(line, column)    用于按索引名称取行/列数据,此时,首尾项都会被取出

                                                 参数line指定行索引名称,参数2指定列索引名称(可省略,默认选取所有列)。

DataFrameiloc(line, column)   用于按索引下标取行/列数据,此时,尾项数据不会被取出

                                                 参数line指定行索引下标,参数2指定列索引下标(可省略,默认选取所有列)。

1、删除一列:

    Del df[column] -> df的列直接被删除;

    Dfdrop(col,axis=1) -> 删除一列,不改变原df,重新赋值一个新的df

    Dfdrop(col,axis=1,inplace=True) -> 直接改变原df的值   

2、查看df每列数据类型:

    Df[col]dtype==‘object’ == True

    Df[col]dtype==‘int’ == True

    Df[col]dtype==‘float’ == True

3、强制修改df某列类型:

    Df[col]=df[col]astype(float) -> 将col列改为float类型

4、DataFrame中方差为0的列:

    Series=dfvar() ## 获取方差series

    Lst_col=Series[Seriesvalues == 0]indextolist()

5、打印异常

try:

    Execute()

Exception as err:

    Print(err)

 

以上就是关于python如何读取excel里面某一整列内容并修改全部的内容,包括:python如何读取excel里面某一整列内容并修改、Python其实很简单 第十九章 Pandas之Series与DataFrame、Python Pandas 依据标签或者位置选取特定行列 loc和iloc两种方式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9815514.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存