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 11 Python
Python函数参数类型*、**的区别
Apr 11 Python
Python3遍历目录树实现方法
May 22 Python
Python工程师面试题 与Python基础语法相关
Jan 14 Python
Python 列表排序方法reverse、sort、sorted详解
Jan 22 Python
Python 爬虫爬取指定博客的所有文章
Feb 17 Python
Python 基础教程之str和repr的详解
Aug 20 Python
python如何将图片转换为字符图片
Aug 19 Python
对Python3 * 和 ** 运算符详解
Feb 16 Python
python 求一个列表中所有元素的乘积实例
Jun 11 Python
python科学计算之numpy——ufunc函数用法
Nov 25 Python
django使用JWT保存用户登录信息
Apr 22 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
基于PHP5魔术常量与魔术方法的详解
2013/06/13 PHP
PHP屏蔽过滤指定关键字的方法
2014/11/03 PHP
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
用PHP写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
WEB高性能开发之疯狂的HTML压缩
2010/06/19 Javascript
另一个javascript小测验(代码集合)
2011/07/27 Javascript
js 限制数字 js限制输入实现代码
2012/12/04 Javascript
jQuery对Select的操作大集合(收藏)
2013/12/28 Javascript
js自动查找select下拉的菜单并选择(示例代码)
2014/02/26 Javascript
纯js实现重发验证码按钮倒数功能
2015/04/21 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
2015/06/19 Javascript
jQuery实现滑动页面固定顶部显示(可根据显示位置消失与替换)
2015/10/28 Javascript
JS实现对中文字符串进行utf-8的Base64编码的方法(使其与Java编码相同)
2016/06/21 Javascript
微信小程序 基础组件与导航组件详细介绍
2017/02/21 Javascript
解决ionic和angular上拉加载的问题
2017/08/03 Javascript
Vue组件之极简的地址选择器的实现
2018/05/31 Javascript
JS闭包经典实例详解
2018/12/20 Javascript
Python线程的两种编程方式
2015/04/14 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
2016/07/01 Python
Python中遇到的小问题及解决方法汇总
2017/01/11 Python
几种实用的pythonic语法实例代码
2018/02/24 Python
python实现装饰器、描述符
2018/02/28 Python
Python中将变量按行写入txt文本中的方法
2018/04/03 Python
利用pandas读取中文数据集的方法
2018/07/25 Python
Python语言快速上手学习方法
2018/12/14 Python
如何使用Python进行OCR识别图片中的文字
2019/04/01 Python
python实现在函数中修改变量值的方法
2019/07/16 Python
python的pip有什么用
2020/06/17 Python
Python实现自动签到脚本功能
2020/08/20 Python
Hunkemöller西班牙:欧洲最大的内衣连锁店
2018/08/15 全球购物
安全责任书范本
2014/04/15 职场文书
小学生一分钟演讲稿
2014/08/26 职场文书
工作疏忽检讨书500字
2014/10/26 职场文书
数学考试作弊检讨书300字
2015/02/16 职场文书
浅谈mysql增加索引不生效的几种情况
2021/06/23 MySQL
MySql数据库 查询时间序列间隔
2022/05/11 MySQL