pandas中如何提取DataFrame的某些列

这篇具有很好参考价值的文章主要介绍了pandas中如何提取DataFrame的某些列。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在处理表格型数据时,一行数据是一个 sample,列就是待提取的特征。怎么选取其中的一些列呢?本文分享一些方法。

使用如下的数据作为例子:

import pandas as pd
df = pd.DataFrame({'Name':['Anna', 'Betty', 'Richard', 'Philip','Paul'],
        'course1':[85,83,90,84,85],
        'course2':[90,85,83,88,84],
        'course3':[82,86,81,91,85],
        'fruit':['apple','banana','apple','orange','peach'],
        'sport':['basketball', 'volleyball', 'football', 'basketball','baseball']},
         index=[1,2,3,4,5])
df
Name course1 course2 course3 fruit sport
1 Anna 85 90 82 apple basketball
2 Betty 83 85 86 banana volleyball
3 Richard 90 83 81 apple football
4 Philip 84 88 91 orange basketball
5 Paul 85 84 85 peach baseball
方法一:df[columns]

先看最简单的情况。输入列名,选择一列。例如:

df['course2']
1    90
2    85
3    83
4    88
5    84
Name: course2, dtype: int64

df[column list]:选择列。例如:

df[['course2','fruit']]
course2 fruit
1 90 apple
2 85 banana
3 83 apple
4 88 orange
5 84 peach

或者以 column list (list 变量)的形式导入到 df[ ] 中,例如:

select_cols=['course2','fruit']
df[select_cols]
course2 fruit
1 90 apple
2 85 banana
3 83 apple
4 88 orange
5 84 peach

可以用 column list=df.columns[start:end] 的方式选择连续列,start 和 end 均为数字,不包括 end 列。例如:

select_cols=df.columns[1:4]
df[select_cols]
course1 course2 course3
1 85 90 82
2 83 85 86
3 90 83 81
4 84 88 91
5 85 84 85

你可能注意到,其中有 3 列的名字相近:‘course1’,‘course2’,‘course3’。怎么提取这三列呢?这里分享在Kaggle 上看到 一位大神使用的 list comprehension方法。

select_cols=[c for c in df.columns if 'course' in c]
df[select_cols]
course1 course2 course3
1 85 90 82
2 83 85 86
3 90 83 81
4 84 88 91
5 85 84 85

但是,如果你想输入df['course1':'course3'] 来索引连续列,就会报错。而输入数字索引df[1:3]时,结果不再是列索引,而是行索引,如下所示:

df[1:3]
Name course1 course2 course3 fruit sport
2 Betty 83 85 86 banana volleyball
3 Richard 90 83 81 apple football

以下两种方法 df.loc[]和df.iloc[]就可以解决这个问题,可以明确行或列索引。还可以同时取多行和多列。

方法二:df.loc[]:用 label (行名或列名)做索引。

输入 column_list 选择多列 [:, column_list],括号中第一个: 表示选择全部行。例如:

df.loc[:,['course2','fruit']]
course2 fruit
1 90 apple
2 85 banana
3 83 apple
4 88 orange
5 84 peach

选择连续多列 [:,start_col: end_col],注意:包括 end_col。例如:

df.loc[:,'course2':'fruit']
course2 course3 fruit
1 90 82 apple
2 85 86 banana
3 83 81 apple
4 88 91 orange
5 84 85 peach

选择多行和多列,例如:

df.loc[1:3,'course2':'fruit']
course2 course3 fruit
1 90 82 apple
2 85 86 banana
3 83 81 apple

与 df[ ]类似,df.loc[ ]括号内也可以输入判断语句,结果是对行做筛选。例如:

df.loc[df['course1']>84]
#注:输入df[df['course1']>84],输出结果相同
Name course1 course2 course3 fruit sport
1 Anna 85 90 82 apple basketball
3 Richard 90 83 81 apple football
5 Paul 85 84 85 peach baseball
方法三:df.iloc[]: i 表示 integer,用 integer location(行或列的整数位置,从0开始)做索引。

df.iloc与df.loc用法类似,只是索引项不同。

df.iloc[:,[2,4]]
course2 fruit
1 90 apple
2 85 banana
3 83 apple
4 88 orange
5 84 peach

选择连续多列:df.iloc[:, start_ix:end_ix],注意:不包括 end_ix。例如:

df.iloc[:,2:5]
course2 course3 fruit
1 90 82 apple
2 85 86 banana
3 83 81 apple
4 88 91 orange
5 84 85 peach

选择多行与多列,例如:

df.iloc[1:3,[2,4]]
course2 fruit
2 85 banana
3 83 apple

与 df.loc[] 不同,df.iloc[] 括号内不可以输入判断语句。

觉得本文不错的话,请点赞支持一下吧,谢谢!

关注我 宁萌Julie,互相学习,多多交流呀!

参考:

1.如何选取dataframe的多列-教程:https://www.geeksforgeeks.org/how-to-select-multiple-columns-in-a-pandas-dataframe/

2.用 list comprehension 选择多列:https://www.kaggle.com/code/robikscube/ieee-fraud-detection-first-look-and-eda/notebook

3.df.loc 与 df.iloc 的比较:https://stackoverflow.com/questions/31593201/how-are-iloc-and-loc-different文章来源地址https://www.toymoban.com/news/detail-471025.html

到了这里,关于pandas中如何提取DataFrame的某些列的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 3秒学会!Pandas DataFrame列如何快速转换为列表

    在数据处理中,我们经常会遇到需要将Pandas DataFrame的某列转换为列表的情况。如果你还在纠结这需要耗费精力去查阅资料,那么你错了!本文将教会你3秒内学会3种Pandas列转换为列表的方法。 1、 .values.tolist() 这是最简单直接的方法。举个例子,如果你有一个DataFrame如下:  

    2024年02月08日
    浏览(51)
  • pandas 缺失值、异常值提取和处理

    遍历每列 - 列长是否小于总长 -缺失值所在行: df[\\\'列名\\\'][df[\\\'列名‘].isnull().values==True ] 1. 缺失值处理 dropna()删除缺失值 使用 fillna() 方法填充缺失值,可以使用指定的值、前一个有效值、后一个有效值或者均值、中位数等。 最后一行的边界情况指的是第一行、最后一行等情况

    2024年02月19日
    浏览(36)
  • 【机器学习5】数据处理(二)Pandas:表格处理

    Pandas提供了三种数据类型,分别是 Series 、 DataFrame 和 Panel 。Series用于保存一维数据,DataFrame用于保存二维数据,Panel用于保存三维数据或者可变维数据。平时的表格处理数据分析最常用的数据类型是 Series 和 DataFrame ,Panel较少用到。 Series本质上是一个含有索引的 一维数组

    2024年02月13日
    浏览(46)
  • python的pandas中如何在dataframe中插入一行或一列数据?

    dataframe类型是如何插入一行或一列数据的呢?这个需求在本文中将会进行讨论。相比较ndarray类型的同样的“数据插入”需求,dataframe的实现方式,则不是很好用。本文以一个dataframe类型变量为例,测试插入一行数据或者一列数据的方式方法。测试环境:win10,python@3.11.0,nu

    2024年02月03日
    浏览(65)
  • Pandas教程:如何使用insert函数向Dataframe指定位置插入新的数据列(Python)

    Pandas教程:如何使用insert函数向Dataframe指定位置插入新的数据列(Python) Pandas是Python中最流行的数据处理和分析库之一。在数据分析过程中,有时候需要在Dataframe中插入新的数据列。在本教程中,我们将介绍如何使用Pandas的insert函数在指定位置插入新的数据列。 首先,我们

    2024年02月11日
    浏览(41)
  • 如何使用Python的pandas库获取DataFrame数据的最小值、最大值以及自定义分位数?

    Pandas是一个非常流行的Python数据处理库,它提供了大量的方法和工具来处理和分析数据。在本文中,我将向您展示如何使用Pandas获取dataframe格式数据的最小值、最大值和自定义分位数。 1、 获取最小值和最大值 获取dataframe的最小值和最大值非常简单。可以使用Pandas的min()和

    2024年02月02日
    浏览(83)
  • 52_Pandas处理日期和时间列(字符串转换、日期提取等)

    将解释如何操作表示 pandas.DataFrame 的日期和时间(日期和时间)的列。字符串与 datetime64[ns] 类型的相互转换,将日期和时间提取为数字的方法等。 以下内容进行说明。 如何将 datetime64[ns] 类型指定为索引并将其处理为时序数据以及如何使用,请参考以下文章。 26_Pandas.DataFr

    2024年01月22日
    浏览(50)
  • pyspark.sql.dataframe.DataFrame 怎么转pandas DataFrame

    pyspark.sql.dataframe.DataFrame 怎么转pandas DataFrame 要将 PySpark 的  pyspark.sql.dataframe.DataFrame  转换为 Pandas DataFrame,可以使用  toPandas()  方法。以下是一个示例: 上面的代码输出 在上述示例中,我们首先使用 PySpark 创建了一个示例 DataFrame  df_spark 。然后,我们使用  toPandas()  方法

    2024年03月20日
    浏览(47)
  • 【玩转pandas系列】pandas数据结构—DataFrame

    大家好!我是一朵向阳花(花花花)🍭,本期跟大家分享的知识是 pandas 数据结构——DataFrame。 作者的【 Python 数据分析】专栏正在火热更新中🔥,如果本文对您有帮助,欢迎大家点赞 + 评论 + 收藏 ! 每日金句分享: 慢慢来,谁还没有一个努力的过程。』—— pony「网易云

    2024年02月15日
    浏览(36)
  • DataFrame.query()--Pandas

    Pandas 中的一个函数,用于在 DataFrame 中执行查询操作。这个方法会返回一个新的 DataFrame,其中包含符合查询条件的数据行。请注意,query 方法只能用于筛选行,而不能用于筛选列。 参数 含义 expr 查询字符串;对于不是有效python变量名的列名:如:UnitPrice(USD),需要将列名

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包