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实现绘制树枝简单示例
Jul 24 Python
使用beaker让Facebook的Bottle框架支持session功能
Apr 23 Python
python操作字典类型的常用方法(推荐)
May 16 Python
浅谈python中的占位符
Nov 09 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
Feb 23 Python
Python中GIL的使用详解
Oct 03 Python
python实现动态创建类的方法分析
Jun 25 Python
libreoffice python 操作word及excel文档的方法
Jul 04 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
Jun 03 Python
Python应用实现双指数函数及拟合代码实例
Jun 19 Python
pycharm配置python 设置pip安装源为豆瓣源
Feb 05 Python
pytest实现多进程与多线程运行超好用的插件
Jul 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
德生1994机评
2021/03/02 无线电
转PHP手册及PHP编程标准
2006/12/17 PHP
PHP学习之输出字符串(echo,print,printf,print_r和var_dump)
2011/04/17 PHP
php生成缩略图填充白边(等比缩略图方案)
2013/12/25 PHP
PHP页面输出时js设置input框的选中值
2016/09/30 PHP
php 使用html5实现多文件上传实例
2016/10/24 PHP
用tip解决Ext列宽度不够的问题
2008/12/13 Javascript
jquery select(列表)的操作(取值/赋值)
2009/08/06 Javascript
jquery 简短右键菜单 多浏览器兼容
2010/01/01 Javascript
子页向父页传值示例
2013/11/27 Javascript
在jquery中的ajax方法怎样通过JSONP进行远程调用
2014/04/04 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
Bootstrap Paginator分页插件使用方法详解
2016/05/30 Javascript
详解vue2.0 transition 多个元素嵌套使用过渡
2017/06/19 Javascript
JavaScript深拷贝和浅拷贝概念与用法实例分析
2018/06/07 Javascript
vue刷新页面时去闪烁提升用户体验效果的实现方法
2018/12/10 Javascript
原生javascript实现连连看游戏
2019/01/03 Javascript
Vue动态组件和异步组件原理详解
2019/05/06 Javascript
JavaScript读取本地文件常用方法流程解析
2020/10/12 Javascript
axios封装与传参示例详解
2020/10/18 Javascript
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
2014/11/19 Python
python实现五子棋人机对战游戏
2020/03/25 Python
python如何将两张图片生成为全景图片
2020/03/05 Python
python目标检测给图画框,bbox画到图上并保存案例
2020/03/10 Python
酒店服务与管理毕业生求职信
2013/11/02 职场文书
周年庆典邀请函范文
2014/01/24 职场文书
财务部经理岗位职责
2014/02/03 职场文书
高中生学期学习自我评价
2014/02/24 职场文书
小学教师读书活动总结
2014/07/08 职场文书
2014年学校德育工作总结
2014/12/05 职场文书
2014年居委会工作总结
2014/12/09 职场文书
2015年高三班主任工作总结
2015/05/21 职场文书
罗马假日观后感
2015/06/08 职场文书
Python超详细分步解析随机漫步
2022/03/17 Python
Python数据处理的三个实用技巧分享
2022/04/01 Python