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 相关文章推荐
动态规划之矩阵连乘问题Python实现方法
Nov 27 Python
你真的了解Python的random模块吗?
Dec 12 Python
python中的随机函数random的用法示例
Jan 27 Python
PyQt4实现下拉菜单可供选择并打印出来
Apr 20 Python
Python函数参数操作详解
Aug 03 Python
python 多线程重启方法
Feb 18 Python
django 使用全局搜索功能的实例详解
Jul 18 Python
python使用docx模块读写docx文件的方法与docx模块常用方法详解
Feb 17 Python
tensorflow生成多个tfrecord文件实例
Feb 17 Python
在python中list作函数形参,防止被实参修改的实现方法
Jun 05 Python
Django model class Meta原理解析
Nov 14 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
Jan 15 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
PHP语法速查表
2006/12/06 PHP
PHP 页面编码声明方法详解(header或meta)
2010/03/12 PHP
PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
2012/12/07 PHP
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
PHP 实现代码复用的一个方法 traits新特性
2015/02/22 PHP
浅谈php+phpStorm+xdebug配置方法
2015/09/17 PHP
基于Codeigniter框架实现的student信息系统站点动态发布功能详解
2017/03/23 PHP
PHP自动识别当前使用移动终端
2018/05/21 PHP
Jquery倒数计时按钮setTimeout的实例代码
2013/07/04 Javascript
jquery提交form表单时禁止重复提交的方法
2014/02/13 Javascript
jquery自定义下拉列表示例
2014/04/25 Javascript
用javascript关闭本窗口技巧小结
2014/09/05 Javascript
分析了一下JQuery中的extend方法实现原理
2015/02/27 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
2015/03/02 Javascript
vue2笔记 — vue-router路由懒加载的实现
2017/03/03 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
详解react-router4 异步加载路由两种方法
2017/09/12 Javascript
jQuery实现动态添加节点与遍历节点功能示例
2017/11/09 jQuery
vue生命周期和react生命周期对比【推荐】
2018/09/19 Javascript
Vue+webpack项目配置便于维护的目录结构教程详解
2018/10/14 Javascript
小程序实现多列选择器
2019/02/15 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
2019/05/22 Javascript
jquery操作checkbox的常用方法总结【附测试源码下载】
2019/06/10 jQuery
vue3.0实现插件封装
2020/12/14 Vue.js
python实现音乐下载的统计
2018/06/20 Python
使用Python实现在Windows下安装Django
2018/10/17 Python
Python中的self用法详解
2019/08/06 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
2020/06/29 Python
罗德与泰勒百货官网:Lord & Taylor
2016/08/12 全球购物
斯福泰克软件测试面试题
2015/02/16 面试题
EJB的角色和三个对象
2015/12/31 面试题
介绍一下Ruby的多线程处理
2013/02/01 面试题
清正廉洁演讲稿
2014/05/22 职场文书
教师思想工作总结2015
2015/05/13 职场文书
刑事辩护词范文
2015/05/21 职场文书