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实现代码行数统计示例分享
Feb 10 Python
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
Jun 09 Python
tensorflow学习笔记之简单的神经网络训练和测试
Apr 15 Python
Python在groupby分组后提取指定位置记录方法
Apr 20 Python
python 除法保留两位小数点的方法
Jul 16 Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
Aug 01 Python
Django 1.10以上版本 url 配置注意事项详解
Aug 05 Python
python等差数列求和公式前 100 项的和实例
Feb 25 Python
Python日志处理模块logging用法解析
May 19 Python
python GUI模拟实现计算器
Jun 22 Python
解决python3.x安装numpy成功但import出错的问题
Nov 17 Python
python如何进行基准测试
Apr 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 图像函数大举例(非原创)
2009/06/20 PHP
PHP无敌近乎加密方式!
2010/07/17 PHP
解析posix与perl标准的正则表达式区别
2013/06/17 PHP
memcache命令启动参数中文解释
2014/01/13 PHP
ThinkPHP模板之变量输出、自定义函数与判断语句用法
2014/11/01 PHP
仿163填写邮件地址自动显示下拉(无优化)
2008/11/05 Javascript
javascript 简练的几个函数
2009/08/29 Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
2016/03/05 Javascript
动态设置form表单的action属性的值的简单方法
2016/05/25 Javascript
JS实现数字格式千分位相互转换方法
2016/08/01 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
2017/12/19 Javascript
官方推荐react-navigation的具体使用详解
2018/05/08 Javascript
JS实现select选中option触发事件操作示例
2018/07/13 Javascript
独立部署小程序基于nodejs的服务器过程详解
2019/06/24 NodeJs
在antd中setFieldsValue和defaultVal的用法
2020/10/29 Javascript
[40:03]RNG vs VG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
[01:01]2020完美高校联赛(秋)西安落幕
2021/03/11 DOTA
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
Python入门教程之if语句的用法
2015/05/14 Python
python 爬取微信文章
2016/01/30 Python
图文详解WinPE下安装Python
2016/05/17 Python
python 通过logging写入日志到文件和控制台的实例
2018/04/28 Python
在Python中定义一个常量的方法
2018/11/10 Python
python爬取cnvd漏洞库信息的实例
2019/02/14 Python
对python3 Serial 串口助手的接收读取数据方法详解
2019/06/12 Python
linux环境中没有网络怎么下载python
2019/07/07 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
2019/09/23 Python
学习Python列表的基础知识汇总
2020/03/10 Python
python中count函数知识点浅析
2020/12/17 Python
pycharm进入时每次都是insert模式的解决方式
2021/02/05 Python
比较基础的php面试题及答案-填空题
2014/04/26 面试题
女方婚礼新郎答谢词
2014/01/11 职场文书
单位提档介绍信
2014/01/17 职场文书
报纸媒体创意广告词
2014/03/17 职场文书
教师调动申请报告
2015/05/18 职场文书
CentOS7 minimal 最小化安装网络设置过程
2022/12/24 Servers