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中find()方法的使用
May 18 Python
django使用html模板减少代码代码解析
Dec 12 Python
彻彻底底地理解Python中的编码问题
Oct 15 Python
django 外键model的互相读取方法
Dec 15 Python
python3.6下Numpy库下载与安装图文教程
Apr 02 Python
bluepy 一款python封装的BLE利器简单介绍
Jun 25 Python
手写一个python迭代器过程详解
Aug 27 Python
Python 3.6打包成EXE可执行程序的实现
Oct 18 Python
pytorch::Dataloader中的迭代器和生成器应用详解
Jan 03 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
Jun 30 Python
Python实现加密的RAR文件解压的方法(密码已知)
Sep 11 Python
Appium+Python实现简单的自动化登录测试的实现
Jan 26 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 php_openssl.dll的作用
2013/07/01 PHP
php连接微软MSSQL(sql server)完全攻略
2016/11/27 PHP
select组合框option的捕捉实例代码
2008/09/30 Javascript
JsRender for object语法简介
2014/10/31 Javascript
使用javascript实现Iframe自适应高度
2014/12/24 Javascript
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
jquery表单验证插件formValidator使用方法
2016/04/01 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
2016/06/13 Javascript
微信小程序 less文件编译成wxss文件实现办法
2016/12/05 Javascript
Node.js+Express+MySql实现用户登录注册功能
2017/07/10 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
vue 的keep-alive缓存功能的实现
2018/03/22 Javascript
js实现轮播图的完整代码
2020/10/26 Javascript
redux处理异步action解决方案
2020/03/22 Javascript
antd vue 刷新保留当前页面路由,保留选中菜单,保留menu选中操作
2020/08/06 Javascript
使用python实现baidu hi自动登录的代码
2013/02/10 Python
pycharm 使用心得(四)显示行号
2014/06/05 Python
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
深入解析Python编程中JSON模块的使用
2015/10/15 Python
Python列表和元组的定义与使用操作示例
2017/07/26 Python
Python实现读取机器硬件信息的方法示例
2018/06/09 Python
python使用thrift教程的方法示例
2019/03/21 Python
Python这样操作能存储100多万行的xlsx文件
2019/04/16 Python
在Python中os.fork()产生子进程的例子
2019/08/08 Python
Django认证系统user对象实现过程解析
2020/03/02 Python
Pyqt助手安装PyQt5帮助文档过程图解
2020/11/20 Python
L’urv官网:精品女性运动服品牌
2019/07/07 全球购物
俄罗斯金苹果网上化妆品和香水商店:Goldapple
2019/12/01 全球购物
LUISAVIAROMA中国官网:时尚奢侈品牌购物网站
2020/11/01 全球购物
与C++相比,Java中的数组有什么不同
2014/03/25 面试题
我的动漫时代的创业计划书范文
2014/01/27 职场文书
土木工程师职业规划范文
2014/03/07 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
2016春季运动会开幕词
2016/03/04 职场文书
2016年世界人口日宣传活动总结
2016/04/05 职场文书
Python批量将csv文件转化成xml文件的实例
2021/05/10 Python