13. Pandas的DataFrame列操作

本章主要研究一下DataFrame数据结构如何修改、增删等操作。

13.1 rename修改列名字

对一个dataframe的数据使用rename函数后返回新的dataframe,不影响原dataframe。

import pandas as pd

import numpy as np

val = np.arange(10, 60).reshape(10, 5)

col = ["ax", "bx", "cx", "dx", "ex"]

idx = list("abcdefghij")

df1 = pd.DataFrame(val, columns = col, index = idx)

print df1

print "*" * 21, "

df2 = df1.rename(columns = {"ax" : "close", "bx" : "open"})

print df2

print "*" * 21, "

程序执行结果:

ax bx cx dx ex

a 10 11 12 13 14

b 15 16 17 18 19

c 20 21 22 23 24

d 25 26 27 28 29

e 30 31 32 33 34

f 35 36 37 38 39

g 40 41 42 43 44

h 45 46 47 48 49

i 50 51 52 53 54

j 55 56 57 58 59

*********************

close open cx dx ex

a 10 11 12 13 14

b 15 16 17 18 19

c 20 21 22 23 24

d 25 26 27 28 29

e 30 31 32 33 34

f 35 36 37 38 39

g 40 41 42 43 44

h 45 46 47 48 49

i 50 51 52 53 54

j 55 56 57 58 59

*********************

如果想直接影响本dataframe,可以使用参数inplace设置为True。

import pandas as pd

import numpy as np

val = np.arange(10, 60).reshape(10, 5)

col = ["ax", "bx", "cx", "dx", "ex"]

idx = list("abcdefghij")

df1 = pd.DataFrame(val, columns = col, index = idx)

print df1

print "*" * 21, "

df1.rename(columns = {"ax" : "close", "bx" : "open"}, inplace = True)

print df1

print "*" * 21, "

程序的执行结果:

ax bx cx dx ex

a 10 11 12 13 14

b 15 16 17 18 19

c 20 21 22 23 24

d 25 26 27 28 29

e 30 31 32 33 34

f 35 36 37 38 39

g 40 41 42 43 44

h 45 46 47 48 49

i 50 51 52 53 54

j 55 56 57 58 59

*********************

close open cx dx ex

a 10 11 12 13 14

b 15 16 17 18 19

c 20 21 22 23 24

d 25 26 27 28 29

e 30 31 32 33 34

f 35 36 37 38 39

g 40 41 42 43 44

h 45 46 47 48 49

i 50 51 52 53 54

j 55 56 57 58 59

*********************

13.2 增加一列

在pandas里对dataframe数据的增加可以通过[]或者insert函数等方法来实现。

[]方式将新的series添加在原dataframe的尾部。

import pandas as pd

import numpy as np

val = np.arange(10, 60).reshape(10, 5)

col = ["ax", "bx", "cx", "dx", "ex"]

idx = list("abcdefghij")

df1 = pd.DataFrame(val, columns = col, index = idx)

print df1

print "*" * 21, "

nval = val = np.arange(100, 110).reshape(10, 1)

df1["fx"] = nval

print df1

程序的执行结果:

ax bx cx dx ex

a 10 11 12 13 14

b 15 16 17 18 19

c 20 21 22 23 24

d 25 26 27 28 29

e 30 31 32 33 34

f 35 36 37 38 39

g 40 41 42 43 44

h 45 46 47 48 49

i 50 51 52 53 54

j 55 56 57 58 59

*********************

ax bx cx dx ex fx

a 10 11 12 13 14 100

b 15 16 17 18 19 101

c 20 21 22 23 24 102

d 25 26 27 28 29 103

e 30 31 32 33 34 104

f 35 36 37 38 39 105

g 40 41 42 43 44 106

h 45 46 47 48 49 107

i 50 51 52 53 54 108

j 55 56 57 58 59 109

而insert函数可将插入的series放在指定位置。

import pandas as pd

import numpy as np

val = np.arange(10, 60).reshape(10, 5)

col = ["ax", "bx", "cx", "dx", "ex"]

idx = list("abcdefghij")

df1 = pd.DataFrame(val, columns = col, index = idx)

print df1

print "*" * 21, "

nval = val = np.arange(100, 110).reshape(10, 1)

df1["fx"] = nval

print df1

print "*" * 21, "

df1.insert(1, "gx", nval)

print df1

print "*" * 21, "

程序的执行结果:

ax bx cx dx ex

a 10 11 12 13 14

b 15 16 17 18 19

c 20 21 22 23 24

d 25 26 27 28 29

e 30 31 32 33 34

f 35 36 37 38 39

g 40 41 42 43 44

h 45 46 47 48 49

i 50 51 52 53 54

j 55 56 57 58 59

*********************

ax bx cx dx ex fx

a 10 11 12 13 14 100

b 15 16 17 18 19 101

c 20 21 22 23 24 102

d 25 26 27 28 29 103

e 30 31 32 33 34 104

f 35 36 37 38 39 105

g 40 41 42 43 44 106

h 45 46 47 48 49 107

i 50 51 52 53 54 108

j 55 56 57 58 59 109

*********************

ax gx bx cx dx ex fx

a 10 100 11 12 13 14 100

b 15 101 16 17 18 19 101

c 20 102 21 22 23 24 102

d 25 103 26 27 28 29 103

e 30 104 31 32 33 34 104

f 35 105 36 37 38 39 105

g 40 106 41 42 43 44 106

h 45 107 46 47 48 49 107

i 50 108 51 52 53 54 108

j 55 109 56 57 58 59 109

*********************

loc[]来添加新的数据列。

import pandas as pd

import numpy as np

val = np.arange(10, 60).reshape(10, 5)

col = ["ax", "bx", "cx", "dx", "ex"]

idx = list("abcdefghij")

df1 = pd.DataFrame(val, columns = col, index = idx)

print df1

print "*" * 21, "

nval = val = np.arange(100, 110).reshape(10, 1)

df1.loc[:, "ix"] = nval

print df1

print "*" * 21, "

程序的执行结果:

ax bx cx dx ex

a 10 11 12 13 14

b 15 16 17 18 19

c 20 21 22 23 24

d 25 26 27 28 29

e 30 31 32 33 34

f 35 36 37 38 39

g 40 41 42 43 44

h 45 46 47 48 49

i 50 51 52 53 54

j 55 56 57 58 59

*********************

ax bx cx dx ex ix

a 10 11 12 13 14 100

b 15 16 17 18 19 101

c 20 21 22 23 24 102

d 25 26 27 28 29 103

e 30 31 32 33 34 104

f 35 36 37 38 39 105

g 40 41 42 43 44 106

h 45 46 47 48 49 107

i 50 51 52 53 54 108

j 55 56 57 58 59 109

13.3 concat多列连接

pandas有个concat函数可以连接多个dataframe数据组成一个更大的dataframe数据。

import pandas as pd

import numpy as np

val1 = np.arange(10, 40).reshape(10, 3)

val2 = np.arange(50, 80).reshape(10, 3)

col1 = ["ax", "bx", "cx"]

col2 = ["cx", "dx", "ex"]

idx = list("abcdefghij")

df1 = pd.DataFrame(val1, columns = col1, index = idx)

df2 = pd.DataFrame(val2, columns = col2, index = idx)

print df1

print "*" * 21, "

print df2

print "*" * 21, "

df3 = pd.concat([df1, df2[5:], df1[:5],df2], axis = 1)

print df3

程序执行结果:

********************

ax bx cx

a 10 11 12

b 13 14 15

c 16 17 18

d 19 20 21

e 22 23 24

f 25 26 27

g 28 29 30

h 31 32 33

i 34 35 36

j 37 38 39

*********************

cx dx ex

a 50 51 52

b 53 54 55

c 56 57 58

d 59 60 61

e 62 63 64

f 65 66 67

g 68 69 70

h 71 72 73

i 74 75 76

j 77 78 79

*********************

ax bx cx cx dx ex ax bx cx cx dx ex

a 10 11 12 NaN NaN NaN 10 11 12 50 51 52

b 13 14 15 NaN NaN NaN 13 14 15 53 54 55

c 16 17 18 NaN NaN NaN 16 17 18 56 57 58

d 19 20 21 NaN NaN NaN 19 20 21 59 60 61

e 22 23 24 NaN NaN NaN 22 23 24 62 63 64

f 25 26 27 65 66 67 NaN NaN NaN 65 66 67

g 28 29 30 68 69 70 NaN NaN NaN 68 69 70

h 31 32 33 71 72 73 NaN NaN NaN 71 72 73

i 34 35 36 74 75 76 NaN NaN NaN 74 75 76

j 37 38 39 77 78 79 NaN NaN NaN 77 78 79

从结果可以看出,连接的两个dataframe结构不同,即有的dataframe没有相应的行,那么数据行上无数据用NaN填充。

13.4 列的内容替换

可以通过赋值的方式更换列的数值。

import pandas as pd

import numpy as np

val1 = np.arange(10, 40).reshape(10, 3)

val2 = np.arange(50, 80).reshape(10, 3)

col1 = ["ax", "bx", "cx"]

col2 = ["cx", "dx", "ex"]

idx = list("abcdefghij")

df1 = pd.DataFrame(val1, columns = col1, index = idx)

df2 = pd.DataFrame(val2, columns = col2, index = idx)

print df1[:3]

print "*" * 21, "

print df2[:3]

print "*" * 21, "

df1.cx = df2.cx

print df1[:3]

这里df1里的cx列被换成了df2里的cx内容。

ax bx cx

a 10 11 12

b 13 14 15

c 16 17 18

*********************

cx dx ex

a 50 51 52

b 53 54 55

c 56 57 58

*********************

ax bx cx

a 10 11 50

b 13 14 53

c 16 17 56

13.5 删除列

删除dataframe的列可以用del()、dataframe的pop函数、drop函数。del函数直接影响原dataframe,pop函数返回被删除的数据即某列,其结果是一个Series,而drop可以指定多列删除。

import pandas as pd

import numpy as np

val1 = np.arange(10, 40).reshape(10, 3)

val2 = np.arange(50, 80).reshape(10, 3)

col1 = ["ax", "bx", "cx"]

col2 = ["cx", "dx", "ex"]

idx = list("abcdefghij")

df1 = pd.DataFrame(val1, columns = col1, index = idx)

df2 = pd.DataFrame(val2, columns = col2, index = idx)

print "*" * 21

print df1[:3]

print "*" * 21

print df2[:3]

del df1["cx"]

print "*" * 21

print df1[:3]

df3 = df2.pop("cx")

print "+" * 21

print df2[:3]

print "-" * 21

print df3[:3]

print "/" * 21

df1 = pd.DataFrame(val1, columns = col1, index = idx)

df4 = df1.drop(["ax", "cx"], axis = 1)

print df1[:3]

print df4[:3]

程序执行结果如下:

ax bx cx

a 10 11 12

b 13 14 15

c 16 17 18

*********************

cx dx ex

a 50 51 52

b 53 54 55

c 56 57 58

*********************

ax bx

a 10 11

b 13 14

c 16 17

+++++++++++++++++++++

dx ex

a 51 52

b 54 55

c 57 58

---------------------

a 50

b 53

c 56

Name: cx, dtype: int64

/

ax bx cx

a 10 11 12

b 13 14 15

c 16 17 18

bx

a 11

b 14

c 17

python pandas dataframe函数_Pandas的DataFrame列操作相关推荐

  1. blankcount函数python,Python pandas常用函数详解

    本文研究的主要是pandas常用函数,具体介绍如下. 1 import语句 2 文件读取 df = pd.read_csv(path='file.csv') 参数:header=None 用默认列名, ...

  2. Python Pandas聚合函数

    Python Pandas聚合函数 在前一节,我们重点介绍了窗口函数.我们知道,窗口函数可以与聚合函数一起使用,聚合函数指的是对一组数据求总和.最大值.最小值以及平均值的操作,本节重点讲解聚合函数的应 ...

  3. python pandas 处理并excel 插入一列新的数据

    python pandas 处理excel并插入一列新的数据 接到个需求是在表格里塞入一列新的数据,假如分页的数据(页_条数),我们这是200条/页,用的是pandas import pandas a ...

  4. python中fillna函数_Pandas DataFrame.fillna()例子

    本文概述 我们可以使用fillna()函数填充数据集中的空值. 句法 DataFrame.fillna(value=None, method=None, axis=None, inplace=Fals ...

  5. python中shift函数_pandas DataFrame.shift()函数

    pandas DataFrame.shift()函数可以把数据移动指定的位数 period参数指定移动的步幅,可以为正为负.axis指定移动的轴,1为行,0为列. eg: 有这样一个DataFrame ...

  6. python pandas excel 排序_Pandas 按组汇总和列排序 - python

    给定以下数据框 In [31]: rand = np.random.RandomState(1) df = pd.DataFrame({'A': ['foo', 'bar', 'baz'] * 2, ...

  7. python列表转集合_Pandas把dataframe或series转换成list的方法

    把dataframe转换为list 输入多维dataframe: ? 1 df= pd.DataFrame({'a':[1,3,5,7,4,5,6,4,7,8,9],'b':[3,5,6,2,4,6, ...

  8. python中columns用法_pandas中DataFrame修改index、columns名的方法示例

    一般常用的有两个方法: 1.使用DataFrame.index = [newName],DataFrame.columns = [newName],这两种方法可以轻松实现. 2.使用rename方法( ...

  9. pandas apply函数_Pandas学习笔记(四)

    前言 上一篇我们研究了Pandas的级联,这一节从如何在DataFrame中处理重复数据开始. 在DataFrame中查找不重复的数据 在实际数据集中,经常会有大量重复的数据,为了去除重复,找到那些唯 ...

最新文章

  1. 基于ORB-SLAM2可持续保存地图的扩展方案
  2. Android多媒体之GLES2战记第四集--移形换影
  3. 退出页面 数据保留_设计师常用的数据分析指标
  4. robot:接口入参为图片时如何发送请求
  5. How to debug WCF in local
  6. hive单机安装 beeline连接hive无法连接
  7. 某集团BI决策系统建设方案分享
  8. Python3.x中set()集合的使用方法
  9. springboot报错Table 'wechat.hibernate_sequence' doesn't exist
  10. Abaqus的inp文件详解
  11. 英文简历模板计算机专业,2016年计算机专业英文简历模板
  12. AutoRunner安装出错怎么解决
  13. python numpy的shape函数
  14. win7 计算机休眠,WIN7如何关闭睡眠和休眠方式(真正的)
  15. 20155310《网络对抗》免杀原理与实践
  16. TSL协议及抓包分析
  17. Keras天坑:想当然的对层的直接运算带来的问题
  18. 仅需三个步骤,即可将wps转换成word
  19. 2021年软考时间阶段
  20. [原创翻译]RFC1619 PPP over SONET/SDH

热门文章

  1. VB编程:掷骰子游戏-55
  2. Java--入门指引
  3. Fiddler教程,比较经典全面
  4. Eureka注册服时报错:Root name (‘timestamp‘) does not match expected (‘applications‘) for type `org.springfr
  5. visio的一些使用技巧(常更)
  6. 解决问题:安装Visio版本冲突(MSI与即点即用)
  7. Python笔记(1-20)
  8. 51单片机波特率计算工具介绍
  9. el-select下拉框不同证件类型校验思路
  10. .NET Reactor使用教程(11)——命令行参数:保护设置