
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两种方式等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)