这篇文章分享一下pandas常见的一些行、列操作方法,比较基础,感兴趣的童鞋可以看看。

首先,我们用 “random.seed(int i)” 生成一组测试数据。

对于random.seed()有兴趣进一步了解的,可以前往阅读 python -- numpy.random.seed()

如果“pip install pandas”遇到问题,可参考 python -- 解决"pip install pandas"时遇到的几个小问题(内含解决pip升级问题)

import pandas as pd
import numpy as np np.random.seed(1) #i取值1,保证代码每次运行都能得到相同的一组数据
sample = pd.DataFrame(np.random.randn(8, 5), columns = list("abcde"))
print(sample)

运行一下,看看生成的随机数组

          a         b         c         d         e
0 1.624345 -0.611756 -0.528172 -1.072969 0.865408
1 -2.301539 1.744812 -0.761207 0.319039 -0.249370
2 1.462108 -2.060141 -0.322417 -0.384054 1.133769
3 -1.099891 -0.172428 -0.877858 0.042214 0.582815
4 -1.100619 1.144724 0.901591 0.502494 0.900856
5 -0.683728 -0.122890 -0.935769 -0.267888 0.530355
6 -0.691661 -0.396754 -0.687173 -0.845206 -0.671246
7 -0.012665 -1.117310 0.234416 1.659802 0.742044

一、单列查询(四种方式)

#方式一:选择列名
sample['a'] #方式二:使用iloc方法,基于位置的索引
sample.iloc[:1,0] #方式三:使用loc方法,基于标签的索引
sample.loc[:,'a'] #方式四:返回pandas数据框类
sample[['a']]

我们来看看代码分别执行这四种方式,效果是怎样的

import pandas as pd
import numpy as np np.random.seed(1) #保证代码每次运行都能得到相同的一组数据,设置随机数种子
sample = pd.DataFrame(np.random.randn(8, 5), columns = list("abcde")) #查询单列
#方式一:选择列名
print(sample['a']) #方式二:使用iloc方法,基于位置的索引,也可写为iloc[0:1, 1]
print(sample.iloc[:1, 0]) #方式三:使用loc方法,基于标签的索引,也可写为loc[0:1, 'a']
print(sample.loc[:1, 'a']) #方式四:返回pandas数据框类
print(sample[['a']])

运行一下,看看效果

#方式一:输出所有行,且列名为a的数据
0 1.624345
1 -2.301539
2 1.462108
3 -1.099891
4 -1.100619
5 -0.683728
6 -0.691661
7 -0.012665
Name: a, dtype: float64 #方式二:iloc[:1, 0]表示第0行开始,筛选出1行,且为第0列的数组
0 1.624345
Name: a, dtype: float64 #方式三:loc[:1, 'a']表示第0行到第1行,且列名为'a'的数组(与方式二有区别,请注意区分)
0 1.624345
1 -2.301539
Name: a, dtype: float64 #方式四:输出所有行,且列名为'a'的数组
a
0 1.624345
1 -2.301539
2 1.462108
3 -1.099891
4 -1.100619
5 -0.683728
6 -0.691661
7 -0.012665

注解:(温馨提示:数组的开始位置是0行、0列。)

1、iloc是基于位置索引,iloc[:1, 0](亦为写为iloc[0:1, 0]):表示第0行开始,筛选出1行,且为第0列的数组。

2、loc是基于标签索引,loc[:1,'a'](亦可写为loc[0:1,'a']):表示第0行到第1行,且列名为'a'的数组。

二、多列查询(两种方式)

#使用loc方法,标签索引
sample.loc[:3, :'c'] #使用iloc,位置索引
sample.iloc[1:, 1:]

注解:

ioc[r_begin:r_end, c_begin:c:end],iloc[r_begin:r_end, c_begin:c:end]中,r_begin、c_begin表示行、列开始的位置,r_end、c_end表示行、列结束的位置。

如果r_begin或c_end留空,表示从第0行或第0列开始;若r_end或c_end留空,表示到最尾行或最尾列。

敲敲代码,看看效果

import pandas as pd
import numpy as np np.random.seed(1) #保证代码每次运行都能得到相同的一组数据,设置随机数种子
sample = pd.DataFrame(np.random.randn(8, 5), columns = list("abcde"))
print(sample) #使用loc方法,标签索引,输出第0行到第3行,第0列到列名为c'的数组
print(sample.loc[:3, :'c'])
#使用iloc方法,位置索引,输出第1行到结尾行,第1列到结尾列的数组
print(sample.iloc[1:, 1:])

运行一下,看看输出

#完整数组
a b c d e
0 1.624345 -0.611756 -0.528172 -1.072969 0.865408
1 -2.301539 1.744812 -0.761207 0.319039 -0.249370
2 1.462108 -2.060141 -0.322417 -0.384054 1.133769
3 -1.099891 -0.172428 -0.877858 0.042214 0.582815
4 -1.100619 1.144724 0.901591 0.502494 0.900856
5 -0.683728 -0.122890 -0.935769 -0.267888 0.530355
6 -0.691661 -0.396754 -0.687173 -0.845206 -0.671246
7 -0.012665 -1.117310 0.234416 1.659802 0.742044 #sample.loc[:3, :'c']
a b c
0 1.624345 -0.611756 -0.528172
1 -2.301539 1.744812 -0.761207
2 1.462108 -2.060141 -0.322417
3 -1.099891 -0.172428 -0.877858 #sample.iloc[1:, 1:]
b c d e
1 1.744812 -0.761207 0.319039 -0.249370
2 -2.060141 -0.322417 -0.384054 1.133769
3 -0.172428 -0.877858 0.042214 0.582815
4 1.144724 0.901591 0.502494 0.900856
5 -0.122890 -0.935769 -0.267888 0.530355
6 -0.396754 -0.687173 -0.845206 -0.671246
7 -1.117310 0.234416 1.659802 0.742044

三、新增列

sample['new_col'] = sample['a'] + sample['b']
print(sample)
          a         b         c         d         e   new_col
0 1.624345 -0.611756 -0.528172 -1.072969 0.865408 1.012589
1 -2.301539 1.744812 -0.761207 0.319039 -0.249370 -0.556727
2 1.462108 -2.060141 -0.322417 -0.384054 1.133769 -0.598033
3 -1.099891 -0.172428 -0.877858 0.042214 0.582815 -1.272319
4 -1.100619 1.144724 0.901591 0.502494 0.900856 0.044105
5 -0.683728 -0.122890 -0.935769 -0.267888 0.530355 -0.806618
6 -0.691661 -0.396754 -0.687173 -0.845206 -0.671246 -1.088414
7 -0.012665 -1.117310 0.234416 1.659802 0.742044 -1.129975

使用assign方法赋值

#方式一
sample.assign(new_col2 = sample['a'] - sample['b'],
new_col3 = sample['c'] - sample['d'])
print(sample) #方式二
sample = sample.assign(new_col2 = sample['a'] - sample['b'],
new_col3 = sample['c'] - sample['d'])
print(sample)
#方式一:assign赋值后,没有被保存到原始数组中
a b c d e new_col
0 1.624345 -0.611756 -0.528172 -1.072969 0.865408 1.012589
1 -2.301539 1.744812 -0.761207 0.319039 -0.249370 -0.556727
2 1.462108 -2.060141 -0.322417 -0.384054 1.133769 -0.598033
3 -1.099891 -0.172428 -0.877858 0.042214 0.582815 -1.272319
4 -1.100619 1.144724 0.901591 0.502494 0.900856 0.044105
5 -0.683728 -0.122890 -0.935769 -0.267888 0.530355 -0.806618
6 -0.691661 -0.396754 -0.687173 -0.845206 -0.671246 -1.088414
7 -0.012665 -1.117310 0.234416 1.659802 0.742044 -1.129975

#方式二:用assign赋值后,重新赋予sample,保存到原始数组中
a b c ... new_col new_col2 new_col3
0 1.624345 -0.611756 -0.528172 ... 1.012589 2.236102 0.544797
1 -2.301539 1.744812 -0.761207 ... -0.556727 -4.046350 -1.080246
2 1.462108 -2.060141 -0.322417 ... -0.598033 3.522249 0.061637
3 -1.099891 -0.172428 -0.877858 ... -1.272319 -0.927463 -0.920072
4 -1.100619 1.144724 0.901591 ... 0.044105 -2.245343 0.399096
5 -0.683728 -0.122890 -0.935769 ... -0.806618 -0.560838 -0.667881
6 -0.691661 -0.396754 -0.687173 ... -1.088414 -0.294907 0.158033
7 -0.012665 -1.117310 0.234416 ... -1.129975 1.104646 -1.425386

注解:使用assign方法赋值,生成的新变量不会保留在原始表中,需要赋予新值。

四、删除

(1)列删除

#单列删除
sample = sample.drop(['new_col3'], axis=1, inplace=False)
print(sample) #多列删除
sample = sample.drop(['a', 'b'], axis=1, inplace=False)
print(sample)
#单列删除输出结果
a b c d e new_col new_col2
0 1.624345 -0.611756 -0.528172 -1.072969 0.865408 1.012589 2.236102
1 -2.301539 1.744812 -0.761207 0.319039 -0.249370 -0.556727 -4.046350
2 1.462108 -2.060141 -0.322417 -0.384054 1.133769 -0.598033 3.522249
3 -1.099891 -0.172428 -0.877858 0.042214 0.582815 -1.272319 -0.927463
4 -1.100619 1.144724 0.901591 0.502494 0.900856 0.044105 -2.245343
5 -0.683728 -0.122890 -0.935769 -0.267888 0.530355 -0.806618 -0.560838
6 -0.691661 -0.396754 -0.687173 -0.845206 -0.671246 -1.088414 -0.294907
7 -0.012665 -1.117310 0.234416 1.659802 0.742044 -1.129975 1.104646 #多列删除输出结果
c d e new_col new_col2
0 -0.528172 -1.072969 0.865408 1.012589 2.236102
1 -0.761207 0.319039 -0.249370 -0.556727 -4.046350
2 -0.322417 -0.384054 1.133769 -0.598033 3.522249
3 -0.877858 0.042214 0.582815 -1.272319 -0.927463
4 0.901591 0.502494 0.900856 0.044105 -2.245343
5 -0.935769 -0.267888 0.530355 -0.806618 -0.560838
6 -0.687173 -0.845206 -0.671246 -1.088414 -0.294907
7 0.234416 1.659802 0.742044 -1.129975 1.104646

(2)行删除

#单行删除
sample = sample.drop(0)
print(sample) #多行删除
sample = sample.drop([1, 5])
print(sample)
#删除第0行
c d e new_col new_col2
1 -0.761207 0.319039 -0.249370 -0.556727 -4.046350
2 -0.322417 -0.384054 1.133769 -0.598033 3.522249
3 -0.877858 0.042214 0.582815 -1.272319 -0.927463
4 0.901591 0.502494 0.900856 0.044105 -2.245343
5 -0.935769 -0.267888 0.530355 -0.806618 -0.560838
6 -0.687173 -0.845206 -0.671246 -1.088414 -0.294907
7 0.234416 1.659802 0.742044 -1.129975 1.104646 #删除第1、5行
c d e new_col new_col2
2 -0.322417 -0.384054 1.133769 -0.598033 3.522249
3 -0.877858 0.042214 0.582815 -1.272319 -0.927463
4 0.901591 0.502494 0.900856 0.044105 -2.245343
6 -0.687173 -0.845206 -0.671246 -1.088414 -0.294907
7 0.234416 1.659802 0.742044 -1.129975 1.104646

此篇暂时分享到此,后续再继续更新。

python -- pandas常见的一些行、列操作方法(感兴趣的,可以跟着一起练练手)的更多相关文章

  1. 关于Python pandas模块输出每行中间省略号问题

    关于Python数据分析中pandas模块在输出的时候,每行的中间会有省略号出现,和行与行中间的省略号....问题,其他的站点(百度)中的大部分都是瞎写,根本就是复制黏贴以前的版本,你要想知道其他问题 ...

  2. pandas取dataframe特定行/列

    1. 按列取.按索引/行取.按特定行列取 import numpy as np from pandas import DataFrame import pandas as pd df=DataFram ...

  3. Python Pandas库 初步使用

    用pandas+numpy读取UCI iris数据集中鸢尾花的萼片.花瓣长度数据,进行数据清理,去重,排序,并求出和.累积和.均值.标准差.方差.最大值.最小值

  4. 【跟着stackoverflow学Pandas】 - Adding new column to existing DataFrame in Python pandas - Pandas 添加列

    最近做一个系列博客,跟着stackoverflow学Pandas. 以 pandas作为关键词,在stackoverflow中进行搜索,随后安照 votes 数目进行排序: https://stack ...

  5. Python 的 Pandas 对矩阵的行进行求和

    Python 的 Pandas 对矩阵的行进行求和: 若使用 df.apply(sum) 方法的话,只能对矩阵的列进行求和,要对矩阵的行求和,可以先将矩阵转置,然后应用 df.apply(sum) 即 ...

  6. 【Python】Python 读取csv的某行或某列数据

    Python 读取csv的某行 转载 2016年08月30日 21:01:44 标签: python / csv / 数据   站长用Python写了一个可以提取csv任一列的代码,欢迎使用.Gith ...

  7. Pandas之csv文件对列行的相关操作

    1.Pandas对数据某一列删除 1.删除列 import pandas as pd df = pd.read_csv(file) #axis=1就是删除列 df.drop(['列名1','列名2'] ...

  8. python如何输出矩阵的行数与列数?

    Python如何输出矩阵的行数与列数? 对于pyhton里面所导入或者定义的矩阵或者表格数据,想要获得矩阵的行数和列数有以下方法: 1.利用shape函数输出矩阵的行和列 x.shape函数可以输出一 ...

  9. Pandas 常见操作详解

    Pandas 常见操作详解 很多人有误解,总以为Pandas跟熊猫有点关系,跟gui叔创建Python一样觉得Pandas是某某奇葩程序员喜欢熊猫就以此命名,简单介绍一下,Pandas的命名来自于面板 ...

  10. Python 代码优化常见技巧

    代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化.扩展以及文档相关的事情通常需要消耗 80% 的工作量.优化通常包含两方 ...

随机推荐

  1. 如何在mac上使用idea做大数据开发

    1 软件包下载 jdk1.8 (jdk1.8.0_231) idea(包括2018,2019) (ideaIC-2019.3.3/ideaIC-2018.3.5) 汉化包:汉化包.rar maven3 ...

  2. ApplicationRunner 类说明

    在开发中可能会有这样的情景.需要在容器启动的时候执行一些内容.比如读取配置文件,数据库连接之类的.SpringBoot给我们提供了两个接口来帮助我们实现这种需求.这两个接口分别为 CommandLin ...

  3. unable to find Qt5Core.dll on PATH(已解决,超简单)

    不久之前我在引用PyQt5库的时候总是出现unable to find Qt5Core.dll on PATH的错误,错误如下: 百度上都是说什么打包的时候出错,然后加上一句话,我试过以后也不行,后来 ...

  4. 基于Label studio实现UIE信息抽取智能标注方案,提升标注效率!

    基于Label studio实现UIE信息抽取智能标注方案,提升标注效率! 项目链接见文末 人工标注的缺点主要有以下几点: 产能低:人工标注需要大量的人力物力投入,且标注速度慢,产能低,无法满足大规模 ...

  5. R语言文本挖掘细胞词库的转换

    搜狗细胞词库解析 一. 加载R包转换 library(rJava) library(Rwordseg) write.csv(as.data.frame(importSogouScel('wuliu.s ...

  6. IDEAL部署外部tomcat及其乱码解决

    控制台tomca乱码问题: 本人使用tomcat9为例 1.启动信息有中文乱码: 原因:tomcat采用的是utf-8,而windows默认是GBK 修改java.util.logging.Conso ...

  7. 51nod 1153 选择子序列

    51nod 选择子序列 这道题是\(Bunny\)学长在给我们的模拟赛中的一道题. 食用单调栈,处理每个数\(a_i\)左右第一个比自己大的数的下标\(left_i\),\(right_i\),并且建 ...

  8. day40:MySQL:python操作mysql:pymysql模块&SQL注入攻击

    目录 part1:用python连接mysql 1.用python连接mysql的基本语法 2.用python 创建&删除表 3.用python操作事务处理 part2:sql注入攻击 1.s ...

  9. 【Vue项目】尚品汇(六)ShopCar组件开发 购物车模块

    4 购物车 4.1 购物车商品数量控制 Detail\index.vue <div class="cartWrap"> <div class="cont ...

  10. nginx自定义负载均衡及根据cpu运行自定义负载均衡

    转载请注明出处: 1.nginx如何自定义负载均衡 在Nginx中,可以通过配置文件自定义负载均衡策略.具体步骤如下: 首先,在Nginx配置文件中定义一个upstream模块,并设置负载均衡策略和后 ...