python pandas dataframe函数_Pandas的DataFrame列操作
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列操作相关推荐
- blankcount函数python,Python pandas常用函数详解
本文研究的主要是pandas常用函数,具体介绍如下. 1 import语句 2 文件读取 df = pd.read_csv(path='file.csv') 参数:header=None 用默认列名, ...
- Python Pandas聚合函数
Python Pandas聚合函数 在前一节,我们重点介绍了窗口函数.我们知道,窗口函数可以与聚合函数一起使用,聚合函数指的是对一组数据求总和.最大值.最小值以及平均值的操作,本节重点讲解聚合函数的应 ...
- python pandas 处理并excel 插入一列新的数据
python pandas 处理excel并插入一列新的数据 接到个需求是在表格里塞入一列新的数据,假如分页的数据(页_条数),我们这是200条/页,用的是pandas import pandas a ...
- python中fillna函数_Pandas DataFrame.fillna()例子
本文概述 我们可以使用fillna()函数填充数据集中的空值. 句法 DataFrame.fillna(value=None, method=None, axis=None, inplace=Fals ...
- python中shift函数_pandas DataFrame.shift()函数
pandas DataFrame.shift()函数可以把数据移动指定的位数 period参数指定移动的步幅,可以为正为负.axis指定移动的轴,1为行,0为列. eg: 有这样一个DataFrame ...
- python pandas excel 排序_Pandas 按组汇总和列排序 - python
给定以下数据框 In [31]: rand = np.random.RandomState(1) df = pd.DataFrame({'A': ['foo', 'bar', 'baz'] * 2, ...
- 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, ...
- python中columns用法_pandas中DataFrame修改index、columns名的方法示例
一般常用的有两个方法: 1.使用DataFrame.index = [newName],DataFrame.columns = [newName],这两种方法可以轻松实现. 2.使用rename方法( ...
- pandas apply函数_Pandas学习笔记(四)
前言 上一篇我们研究了Pandas的级联,这一节从如何在DataFrame中处理重复数据开始. 在DataFrame中查找不重复的数据 在实际数据集中,经常会有大量重复的数据,为了去除重复,找到那些唯 ...
最新文章
- 基于ORB-SLAM2可持续保存地图的扩展方案
- Android多媒体之GLES2战记第四集--移形换影
- 退出页面 数据保留_设计师常用的数据分析指标
- robot:接口入参为图片时如何发送请求
- How to debug WCF in local
- hive单机安装 beeline连接hive无法连接
- 某集团BI决策系统建设方案分享
- Python3.x中set()集合的使用方法
- springboot报错Table 'wechat.hibernate_sequence' doesn't exist
- Abaqus的inp文件详解
- 英文简历模板计算机专业,2016年计算机专业英文简历模板
- AutoRunner安装出错怎么解决
- python numpy的shape函数
- win7 计算机休眠,WIN7如何关闭睡眠和休眠方式(真正的)
- 20155310《网络对抗》免杀原理与实践
- TSL协议及抓包分析
- Keras天坑:想当然的对层的直接运算带来的问题
- 仅需三个步骤,即可将wps转换成word
- 2021年软考时间阶段
- [原创翻译]RFC1619 PPP over SONET/SDH
热门文章
- VB编程:掷骰子游戏-55
- Java--入门指引
- Fiddler教程,比较经典全面
- Eureka注册服时报错:Root name (‘timestamp‘) does not match expected (‘applications‘) for type `org.springfr
- visio的一些使用技巧(常更)
- 解决问题:安装Visio版本冲突(MSI与即点即用)
- Python笔记(1-20)
- 51单片机波特率计算工具介绍
- el-select下拉框不同证件类型校验思路
- .NET Reactor使用教程(11)——命令行参数:保护设置