简单pythonのDataFrame的[增、删、改、查]操作
2021/12/26 17:09:50
本文主要是介绍简单pythonのDataFrame的[增、删、改、查]操作,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
from pandas import DataFrame df1 = DataFrame([['aa','bb','cc'],['A','B','C'],['a','b','c']],index=['r1','r2','r3'],columns=['c1','c2','c3']) print(df1) >> c1 c2 c3 >>r1 aa bb cc >>r2 A B C >>r3 a b c # 直接访问列名来访问对应的 变量名[列名称1,列名称2,...]: >>r1 aa >>r2 A >>r3 a >>Name: c1, dtype: object #离散选取不同的列 print(df1[['c1','c3']]) >> c1 c3 >>r1 aa cc >>r2 A C >>r3 a c #需要一块连续的列位置时:直接调用.columns[c1:c2]属性切片 左闭右开 c1 到c2-1 #值得注意的是,变量名.columns[c1:c2] 中的 c1 与 c2 只接受整型参数 print(df1[df1.columns[0:2]]) >> c1 c2 >>r1 aa bb >>r2 A B >>r3 a b # 使用切片的形式访问对应的行: 变量名[r1:r2] 访问 从r1 到 r2-1行的数据(其中列全部被包含) print(df1[0:2]) >> c1 c2 c3 >>r1 aa bb cc >>r2 A B C #<<===============================使用 变量名.loc[] ===============================>> #使用格式 变量名.loc[行名称1:行名称2,列名称1:列名称2] #选取该从行名称1 到 行名称2 与 列名称1 到 列名称2 范围的所有数值 #当不写切片时,为精确查找某个位置上的值 print(df1.loc['r1','c1']) >>aa #知道行与列名称=================== print(df1.loc['r1':'r2','c1':'c3']) >> c1 c2 c3 >>r1 aa bb cc >>r2 A B C #离散的选取行 #上面的行选择是使用了切片产生了一个列表作为行的选择,在这里我们手动构造了一个行名字[列表] print(df1.loc[['r1','r3'],'c1':'c3']) >> c1 c2 c3 >>r1 aa bb cc >>r3 a b c #知道行下标与列名称================ print(df1.loc[df1.index[0:3],'c1':'c3']) >> c1 c2 c3 >>r1 aa bb cc >>r2 A B C >>r3 a b c #离散的选取行 #我们也可以选择使用 变量名.index[[r1,..,rn]] 来获得指定列表中的对应行(r1,...,rn)的名称 print(df1.loc[df1.index[[0,2]],'c1':'c3']) >> c1 c2 c3 >>r1 aa bb cc >>r3 a b c #知道行名称与列下标================ print(df1.loc['r1':'r3',df1.columns[0:3]]) >> c1 c2 c3 >>r1 aa bb cc >>r2 A B C >>r3 a b c #离散的选取列 print(df1.loc['r1':'r3',df1.columns[[0,2]]]) >> c1 c3 >>r1 aa cc >>r2 A C >>r3 a c #<<=============================== 变量名.iloc[] ===============================>> #使用格式 变量名.iloc[r1:r2,c1:c2] 选取,其中参数均为整型。 #选取从 第r1行 到 r2行-1 与 c1列 到c2-1列范围内的所有数值 #这个也同理,不写切片形式时,将精确到一个数据 print(df1.iloc[0,0]) >>aa #知道行位置与列位置================ print(df1.iloc[0:3,0:3]) >> c1 c2 c3 >>r1 aa bb cc >>r2 A B C >>r3 a b c #离散的选取 print(df1.iloc[[0,2],0:3]) >> c1 c2 c3 >>r1 aa bb cc >>r3 a b c #知道行名称与列下标================ print(df1.iloc[df1.index.get_loc('r1'):3,0:3]) >> c1 c2 c3 >>r1 aa bb cc >>r2 A B C >>r3 a b c #离散的选取 print(df1.iloc[[df1.index.get_loc('r1'),df1.index.get_loc('r3')],0:3]) >> c1 c2 c3 >>r1 aa bb cc >>r3 a b c #知道行下标与列名称================ print(df1.iloc[0:3,df1.columns.get_loc('c1'):df1.columns.get_loc('c3')+1]) #这里需要注意的是,切片区间为左闭右开,故用get_loc取得数值作为右区间时得+1 >> c1 c2 c3 >>r1 aa bb cc >>r2 A B C >>r3 a b c #离散的选取与前面的思想一样 print(df1.iloc[0:3,[df1.columns.get_loc('c1'),df1.columns.get_loc('c3')]]) >> c1 c3 >>r1 aa cc >>r2 A C >>r3 a c #<<===============================使用 变量名.at[行名称,列名称] ===============================>> #用法 变量名.at[行名称,列名称] 精确到什么行名称中的什么列名称中的一个值 print(df1.at['r1','c1']) >>aa #采用 变量名.iat[r1,c1] 精确到第r1行第c1列中的一个值 print(df1.iat[0,0]) >>aa # ===小总结 方法中 名字前面带 i 的只接受参数为整型,不带 i 的接受参数为自定义的 #修改列名称 df1.columns = ['C1','C2','C3'] print(df1) >> C1 C2 C3 >>r1 aa bb cc >>r2 A B C >>r3 a b c #修改行索引 df1.index = ['R1','R2','R3'] print(df1) >> c1 c2 c3 >>R1 aa bb cc >>R2 A B C >>R3 a b c #删除 #以下两种均不会改变原序列 #根据行名来删除 其中axis可省略不写,默认=0 表示按行删除 print(df1.drop('r1',axis=0)) >> c1 c2 c3 >>r2 A B C >>r3 a b c #根据列名删除,其中axis=1不可省略。 print(df1.drop('c1',axis=1)) >> c2 c3 >>r1 bb cc >>r2 B C >>r3 b c #第二种删除列的方法:使用del ,将会改变原序列 del df1['c1'] print(df1) >> c2 c3 >>r1 bb cc >>r2 B C >>r3 b c #增 #添加新的一列 df1['c4'] = ['test1','test2','test3'] print(df1) >> c1 c2 c3 c4 >>r1 aa bb cc test1 >>r2 A B C test2 >>r3 a b c test3 #添加新的一行 #这里是将两个DataFrame用append方法合并。且,需要明确声明新建合并的DataFrame中的列名 #如果不声明列名,将会出现和与Series一样的情况:出现很多NaN,因为,新建的DataFrame列名默认从0开始 df2 = df1.append(DataFrame([['newA','newB','newC']],index=['r4'],columns=['c1','c2','c3'])) print(df2) >> c1 c2 c3 >>r1 aa bb cc >>r2 A B C >>r3 a b c >>r4 newA newB newC #或是这样:与上述方法效果一样 df1.loc['r4'] = ['newA','newB','newC'] #若是添加了ignore_index = True 参数的话,将置全部的行名从0开始 df2 = df1.append(DataFrame([['newA','newB','newC']],index=['r4'],columns=['c1','c2','c3']),ignore_index=True) print(df2) >> c1 c2 c3 >>0 aa bb cc >>1 A B C >>2 a b c >>3 newA newB newC
这篇关于简单pythonのDataFrame的[增、删、改、查]操作的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门