Pandas:DataFrame对象的基础操作方法


Posted in Python onJune 07, 2018

DataFrame对象的创建,修改,合并

import pandas as pd
import numpy as np

创建DataFrame对象

# 创建DataFrame对象
df = pd.DataFrame([1, 2, 3, 4, 5], columns=['cols'], index=['a','b','c','d','e'])
print df
cols
a 1
b 2
c 3
d 4
e 5
df2 = pd.DataFrame([[1, 2, 3],[4, 5, 6]], columns=['col1','col2','col3'], index=['a','b'])
print df2
col1 col2 col3
a 1 2 3
b 4 5 6
df3 = pd.DataFrame(np.array([[1,2],[3,4]]), columns=['col1','col2'], index=['a','b'])
print df3
col1 col2
a 1 2
b 3 4
df4 = pd.DataFrame({'col1':[1,3],'col2':[2,4]},index=['a','b'])
print df4
col1 col2
a 1 2
b 3 4

创建DataFrame对象的数据可以为列表,数组和字典,列名和索引为列表对象

基本操作

# DataFrame对象的基本操作
df2.index
Index([u'a', u'b'], dtype='object')
df2.columns
Index([u'col1', u'col2', u'col3'], dtype='object')
# 根据索引查看数据
df2.loc['a'] 
# 索引为a这一行的数据
# df2.iloc[0] 跟上面的操作等价,一个是根据索引名,一个是根据数字索引访问数据
col1 1
col2 2
col3 3
Name: a, dtype: int64
print df2.loc[['a','b']] # 访问多行数据,索引参数为一个列表对象
col1 col2 col3
a 1 2 3
b 4 5 6
print df.loc[df.index[1:3]]
cols
b 2
c 3
# 访问列数据
print df2[['col1','col3']]
col1 col3
a 1 3
b 4 6

计算

# DataFrame元素求和
# 默认是对每列元素求和
print df2.sum()
col1 5
col2 7
col3 9
dtype: int64
# 行求和
print df2.sum(1)
a 6
b 15
dtype: int64
# 对每个元素乘以2
print df2.apply(lambda x:x*2)
col1 col2 col3
a 2 4 6
b 8 10 12
# 对每个元素求平方(支持ndarray一样的向量化操作)
print df2**2
col1 col2 col3
a 1 4 9
b 16 25 36
列扩充
# 对DataFrame对象进行列扩充
df2['col4'] = ['cnn','rnn']
print df2
col1 col2 col3 col4
a 1 2 3 cnn
b 4 5 6 rnn
# 也可以通过一个新的DataFrame对象来定义一个新列,索引自动对应
df2['col5'] = pd.DataFrame(['MachineLearning','DeepLearning'],index=['a','b'])
print df2
col1 col2 col3 col4  col5
a 1 2 3 cnn MachineLearning
b 4 5 6 rnn DeepLearning

行扩充

# 行进行扩充
print df2.append(pd.DataFrame({'col1':7,'col2':8,'col3':9,'col4':'rcnn','col5':'ReinforcementLearning'},index=['c']))
col1 col2 col3 col4   col5
a 1 2 3 cnn MachineLearning
b 4 5 6 rnn  DeepLearning
c 7 8 9 rcnn ReinforcementLearning

注意!

# 如果在进行 行扩充时候没有,指定index的参数,索引会被数字取代
print df2.append({'col1':10,'col2':11,'col3':12,'col4':'frnn','col5':'DRL'},ignore_index=True)
col1 col2 col3 col4  col5
0 1 2 3 cnn MachineLearning
1 4 5 6 rnn DeepLearning
2 10 11 12 frnn  DRL
# 以上的行扩充,并没有真正修改,df2这个DataFrame对象,除非
df2 = df2.append(pd.DataFrame({'col1':7,'col2':8,'col3':9,'col4':'rcnn','col5':'ReinforcementLearning'},index=['c']))
print df2
col1 col2 col3 col4   col5
a 1 2 3 cnn MachineLearning
b 4 5 6 rnn  DeepLearning
c 7 8 9 rcnn ReinforcementLearning
c 7 8 9 rcnn ReinforcementLearning
print df2.loc['c']
col1 col2 col3 col4   col5
c 7 8 9 rcnn ReinforcementLearning
c 7 8 9 rcnn ReinforcementLearning

DataFrame对象的合并

# DataFrame 对象的合并
df_a = pd.DataFrame(['wang','jing','hui','is','a','master'],columns=['col6'],index=['a','b','c','d','e','f'])
print df_a
col6
a wang
b jing
c hui
d is
e a
f master
# 默认合并,只保留dfb中的全部索引
dfb = pd.DataFrame([1,2,4,5,6,7],columns=['col1'],index=['a','b','c','d','f','g'])
print dfb.join(df_a)
col1 col6
a 1 wang
b 2 jing
c 4 hui
d 5 is
f 6 master
g 7 NaN
# 默认合并之接受索引已经存在的值
# 通过指定参数 how,指定合并的方式
print dfb.join(df_a,how='inner') # 合并两个DataFrame对象的交集
col1 col6
a 1 wang
b 2 jing
c 4 hui
d 5 is
f 6 master
# 合并两个DataFrame对象的并集
print dfb.join(df_a,how='outer')
col1 col6
a 1.0 wang
b 2.0 jing
c 4.0 hui
d 5.0 is
e NaN a
f 6.0 master
g 7.0 NaN

以上这篇Pandas:DataFrame对象的基础操作方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Django的模版来配合字符串翻译工作
Jul 27 Python
Python3中的真除和Floor除法用法分析
Mar 16 Python
python运行其他程序的实现方法
Jul 14 Python
利用python编写一个图片主色转换的脚本
Dec 07 Python
Python调用C语言的方法【基于ctypes模块】
Jan 22 Python
使用python将大量数据导出到Excel中的小技巧分享
Jun 14 Python
Python判断一个三位数是否为水仙花数的示例
Nov 13 Python
python 计算积分图和haar特征的实例代码
Nov 20 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
Mar 27 Python
基于python SMTP实现自动发送邮件教程解析
Jun 02 Python
python3.x中安装web.py步骤方法
Jun 23 Python
python编写函数注意事项总结
Mar 29 Python
Python中偏函数用法示例
Jun 07 #Python
网红编程语言Python将纳入高考你怎么看?
Jun 07 #Python
python指定写入文件时的编码格式方法
Jun 07 #Python
Python实现的爬虫刷回复功能示例
Jun 07 #Python
异步任务队列Celery在Django中的使用方法
Jun 07 #Python
浅谈python中对于json写入txt文件的编码问题
Jun 07 #Python
Python查看微信撤回消息代码
Jun 07 #Python
You might like
一个用于mysql的数据库抽象层函数库
2006/10/09 PHP
PHP中Http协议post请求参数
2015/11/02 PHP
PHP去除字符串最后一个字符的三种方法实例
2017/03/01 PHP
Laravel框架自定义公共函数的引入操作示例
2019/04/16 PHP
在Laravel 的 Blade 模版中实现定义变量
2019/10/14 PHP
javascript怎么禁用浏览器后退按钮
2014/03/27 Javascript
JavaScript中的值是按值传递还是按引用传递问题探讨
2015/01/30 Javascript
javascript计时器详解
2015/02/28 Javascript
jQuery操作Table技巧大汇总
2016/01/23 Javascript
实例详解ECMAScript5中新增的Array方法
2016/04/05 Javascript
JavaScript数组操作详解
2017/02/04 Javascript
jQuery实现选中行变色效果(实例讲解)
2017/07/06 jQuery
基于webpack 实用配置方法总结
2017/09/28 Javascript
基于对象合并功能的实现示例
2017/10/10 Javascript
jQuery实现的简单图片轮播效果完整示例
2018/02/08 jQuery
js实现跟随鼠标移动的小球
2019/08/26 Javascript
全面解析js中的原型,原型对象,原型链
2021/01/25 Javascript
matplotlib绘制动画代码示例
2018/01/02 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
python数字图像处理之骨架提取与分水岭算法
2018/04/27 Python
python 遗传算法求函数极值的实现代码
2020/02/11 Python
python爬虫实现获取下一页代码
2020/03/13 Python
Python爬取微信小程序Charles实现过程图解
2020/09/29 Python
python Xpath语法的使用
2020/11/26 Python
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
魅力惠奢品线上平台:MEI.COM
2016/11/29 全球购物
英国花园家具中心:Garden Furniture Centre
2017/08/24 全球购物
Raffaello Network德国:意大利拉斐尔时尚购物网
2019/05/01 全球购物
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
SQL Server的固定数据库角色都有哪些?对应的服务器权限有哪些?
2013/05/18 面试题
影视艺术学院毕业生自荐信
2013/11/13 职场文书
求职简历中个人的自我评价
2013/12/25 职场文书
马云的职业生涯规划之路
2014/01/01 职场文书
事业单位请假制度
2014/01/13 职场文书
2014年绿化工作总结
2014/12/09 职场文书
python3实现Dijkstra算法最短路径的实现
2021/05/12 Python