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 相关文章推荐
解决python3中自定义wsgi函数,make_server函数报错的问题
Nov 21 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
Jan 04 Python
python 解压pkl文件的方法
Oct 25 Python
Python socket模块实现的udp通信功能示例
Apr 10 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
Nov 19 Python
利用 Python ElementTree 生成 xml的实例
Mar 06 Python
Python3 获取文件属性的方式(时间、大小等)
Mar 12 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
Mar 30 Python
python实现贪吃蛇双人大战
Apr 18 Python
零基础学python应该从哪里入手
Aug 11 Python
Python 下载Bing壁纸的示例
Sep 29 Python
Python装饰器详细介绍
Mar 25 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 设计模式系列之 specification规格模式
2016/01/10 PHP
在 Laravel 中 “规范” 的开发短信验证码发送功能
2017/10/26 PHP
js传值 判断
2006/10/26 Javascript
基于jquery的3d效果实现代码
2011/03/23 Javascript
使用Json比用string返回数据更友好,也更面向对象一些
2011/09/13 Javascript
根据经纬度计算地球上两点之间的距离js实现代码
2013/03/05 Javascript
js正文内容高亮效果的实现方法
2013/06/30 Javascript
js写的评论分页(还不错)
2013/12/23 Javascript
常用的jQuery前端技巧收集
2014/12/24 Javascript
浅谈jQuery页面的滚动位置scrollTop、scrollLeft
2015/05/19 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
2015/11/03 Javascript
jquery实现图片切换代码
2016/10/13 Javascript
Seajs是什么及sea.js 由来,特点以及优势
2016/10/13 Javascript
实现隔行换色效果的两种方式【实用】
2016/11/27 Javascript
vue实现app页面切换动画效果实例
2017/05/23 Javascript
axios 处理 302 状态码的解决方法
2018/04/10 Javascript
js replace 全局替换的操作方法
2018/06/12 Javascript
使用elementUI实现将图片上传到本地的示例
2018/09/04 Javascript
小程序实现列表点赞功能
2018/11/02 Javascript
在SSM框架下用laypage和ajax实现分页和数据交互的方法
2019/09/27 Javascript
JS面向对象实现飞机大战
2020/08/26 Javascript
[42:56]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
一个简单的python程序实例(通讯录)
2013/11/29 Python
python中使用xlrd、xlwt操作excel表格详解
2015/01/29 Python
详细介绍Python中的偏函数
2015/04/27 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
Python3中的最大整数和最大浮点数实例
2019/07/09 Python
python 日期排序的实例代码
2019/07/11 Python
详解Python3迁移接口变化采坑记
2019/10/11 Python
详解如何用python实现一个简单下载器的服务端和客户端
2019/10/28 Python
Python 绘制可视化折线图
2020/07/22 Python
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
新加坡领先的时尚生活方式零售品牌:CHARLES & KEITH
2018/01/16 全球购物
Hurley官方网站:扎根于海滩生活方式的全球青年文化品牌
2020/05/18 全球购物
经贸专业毕业生求职信
2014/03/23 职场文书
2015年高三毕业班班主任工作总结
2015/10/22 职场文书