iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >pandas.DataFrame设置某一行为表头(列索引),设置某一列为行索引,按索引取多行多列
  • 789
分享到

pandas.DataFrame设置某一行为表头(列索引),设置某一列为行索引,按索引取多行多列

pandaspython数据分析 2023-09-15 11:09:59 789人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

pandas读取文件 pandas.DataFrame 设置索引 pandas.DataFrame 读取单行/列,多行多列 pandas.DataFrame 添加行/列 利用pandas处理表格类型数

pandas读取文件
pandas.DataFrame 设置索引
pandas.DataFrame 读取单行/列,多行多列
pandas.DataFrame 添加行/列

利用pandas处理表格类型数据,快捷方便,不常用但是有的时候又是必要技能,在这里记录一下一些常用函数和自己的踩坑经验

目录

1、导入包

import pands as pd

2、读取文件,并设置行、列索引,常用的存储表格数据为.csv 或 .excel格式

这里设置的文件格式为.csv
文件名及文件原始内容:pandas_test.csv ,
在这里插入图片描述

import pands as pdfile_path = r'pandas_test.csv'df = pd.DataFrame(pd.read_csv(file_path))  # 简单读入,并将第一行作为表头# df1 = pd.DataFrame(pd.read_csv(file_path, header=None))  # 简单读入,**不要将第一行作为表头**# df2 = pd.DataFrame(pd.read_csv(file_path, index_col=3)) # 读入数据,并指定第3列作为行索引print(df)   a  b  c   d   # 默认将第一行设置为表头0  1  z  x   e1  2  x  h  wd2  3  f  j   x3  4  k  s   jprint(df1)   0  1  2   3   # 设置不将第一行设置为表头0  a  b  c   d1  1  z  x   e2  2  x  h  wd3  3  f  j   x4  4  k  s   jprint(df2)    a  b  c      # 读入数据,并指定第4列作为行索引d          e   1  z  xwd  2  x  hx   3  f  jj   4  k  s

3、完成读取后,若想再设置行列索引,或者更改

3.1 设置某一行为列索引【表头】

# 设置某一行为列索引【表头】c_list = df.values.tolist()[1]  # 得到想要设置为列索引【表头】的某一行提取出来df.columns = c_list      # 设置列索引【表头】df.drop([1], inplace=True)  # 将原来的那一行删掉。# 这里的inplace=True,表示就在df这个数据表中进行修改,默认是Falseprint(df)    2  x  h wd0  1  z  x  e2  3  f  j  x3  4  k  s  j# df_new = df.drop([1])# 如果是默认的话,做出的修改就要将修改后的内容赋予新的变量才能呈现出和上面一样的效果# print(df_new)

3.2 设置某一列为行索引

# 设置某一列为行索引df.set_index('c', inplace=True)  # 设置表头为"c"的那一列为行索引print(df)   a  b   dc             # 这里看着这个c单独占一行很不爽,不过后面写入文件保存时会和表头对齐,就不纠结它了x  1  z   eh  2  x  wdj  3  f   xs  4  k   j

3.3 对列索引/表头重命名

# 对列索引【表头】重命名df.rename(columns={"c": "c_new", "a": "a_x"}, inplace=True)print(df)   a_x  b c_new   d0    1  z     x   e1    2  x     h  wd2    3  f     j   x3    4  k     s   j

4、行列索引

4.1 取某一列/行【单列,单行】

4.1.1 按数字索引

col = df.iloc[:, 1]  # 按数字索引取第2列row = df.loc[1, :]   # 按数字索引取第2行# 注意:这里取出来的内容还是pands中的数据格式,如果要取得具体的内容,需要加上.valuesprint(df)   a  b  c   d0  1  z  x   e1  2  x  h  wd2  3  f  j   x3  4  k  s   j==========================================================print(type(col))<class 'pandas.core.series.Series'>print(col) 0    z1    x2    f3    kName: b, dtype: objectprint(col.values)['z' 'x' 'f' 'k']==========================================================print(row)a     2b     xc     hd    wdName: 1, dtype: objectprint(row.values)[2 'x' 'h' 'wd']

4.1.2 按指定索引(非数值型索引)

col = df["b"]      # 取出列索引为"c"的列row = df.loc["x"]  # 取出行索引为"x"的行print(col)cx    zh    xj    fs    kName: b, dtype: objectprint(row)a    1b    zd    eName: x, dtype: object

4.1.2 通过切片索引

row1 = df[0:1]  # 通过切片索引,取得第1print(row1)   a  b  c  d0  1  z  x  e

4.2 取多行多列

4.2.1 仅取多行

# 取多行# 1、直接取此用法需要注意,[]里面一般为列名,表示取某一列,若列名以列表的形式放入[],则可以去多列;单选列结果为Series,多选列结果为Dataframe。选取列名不能超出源数据列名,不然报错若为数值时,默认取行,且只能进行切片操作,不能单独选择,输出结果为Dataframe,即便只选择一行。df[]不能通过索引标签名来选择行(df['x'])rows = df[0:2]  # 取第1~2print(rows)   a  b  c   d0  1  z  x   e1  2  x  h  wd# 2、用 .loc 取.loc[]用法是根据标签名来定位,默认用法是df.loc[行标签(多个用列表),列标签(多个用列表)],如果只提取列,则行标签位置用:代替rows1 = df.loc[0:2]  # 取第1~3print(rows1)   a  b  c   d0  1  z  x   e1  2  x  h  wd2  3  f  j   x

4.2.2 仅取多列

# 1、直接取cols = df[["a","b"]]  # 注意,取多列时记得把列名以列表格式放入print(cols)   a  bc      x  1  zh  2  xj  3  fs  4  k==========================================================# 2.loccols1 = df.loc[:, ["a","b"]]  # 想取出**指定**的多列时用这个print(cols1)  # 取"a","b"两列   a  bc      x  1  zh  2  xj  3  fs  4  kcols2 = df.loc[:, "a":"b"]  # 通过切片取出多列时用这个# 注意,通过这样切片时,"a":"b"是左右包含的print(cols2)   a  bc      x  1  zh  2  xj  3  fs  4  k==========================================================# 3.iloC#.loc[]用法的区别是,该方法通过行列的位置*(数字)*来定位,从0开始计,左闭右开。cols3 = df.iloc[:, 0:2]  # 取前两列print(cols3)    a  bc      x  1  zh  2  xj  3  fs  4  k

4.2.3 同时取多行多列

# 1.locdf1 = df.loc[["x", "h"], ['a', 'd']]  # 用列表指定行列print(df1)   a   dc       x  1   eh  2  wddf2 = df.loc["x": "h", 'a': 'd']      # 通过切片取print(df2)   a  b   dc          x  1  z   eh  2  x  wd========================================================# 2.ilocdf3 = df.iloc[1:3, 0:2]print(df3)   a  bc      h  2  xj  3  f

5、加入行/列

print(df)   a  b   dc          x  1  z   eh  2  x  wdj  3  f   xs  4  k   j==========================================================# 加入列col = df.iloc[:, 1]  # 先按数字索引取第2列,作为添加的内容# 1、在最后一列后面加入一列df["e"] = col      # 直接通过[]添加一列,并将第2列作为新的一列加入原来的数据中;                     # 这里注意新的列名和之前原有的不要重复,否则会修改原有的那一列内容,而不是添加新的一列print(df)   a  b   d  ec             x  1  z   e  zh  2  x  wd  xj  3  f   x  fs  4  k   j  k--------------------------------------------------------# 2、在指定位置加入一列# df.insert(添加列位置索引序号,添加列名,数值,是否允许列名重复)df.insert(1, "i", col, allow_duplicates=True)print(df)   a  i  b   d  ec                x  1  z  z   e  zh  2  x  x  wd  xj  3  f  f   x  fs  4  k  k   j  k======================================================================# 加入行row_add = df.loc["x"]    # 取出行索引为"x"的一行作为新加入的内容# 1.locdf.loc["w"] = row_add    # 在最后一行后加入一行索引为"w"的内容print(df)   a  i  b   d  ec                x  1  z  z   e  zh  2  x  x  wd  xj  3  f  f   x  fs  4  k  k   j  kw  1  z  z   e  z--------------------------------------------------------# 2.appenddf4 = df.append(row_add)  # 把上面取出的一行直接加入到最后一行后面print(df4)   a  i  b   d  ec                x  1  z  z   e  zh  2  x  x  wd  xj  3  f  f   x  fs  4  k  k   j  kx  1  z  z   e  zdf4 = df.append(row_add, ignore_index=True)  # 如果不想要原来的行索引,可以加入这个参数print(df4)   a  i  b   d  e0  1  z  z   e  z1  2  x  x  wd  x2  3  f  f   x  f3  4  k  k   j  k4  1  z  z   e  z

来源地址:https://blog.csdn.net/Admiral_x/article/details/126415277

--结束END--

本文标题: pandas.DataFrame设置某一行为表头(列索引),设置某一列为行索引,按索引取多行多列

本文链接: https://www.lsjlt.com/news/408456.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作