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实现sublime3的less编译插件示例
Apr 27 Python
在Python下使用Txt2Html实现网页过滤代理的教程
Apr 11 Python
Python中文件的读取和写入操作
Apr 27 Python
对Tensorflow中权值和feature map的可视化详解
Jun 14 Python
Pycharm取消py脚本中SQL识别的方法
Nov 29 Python
python字典嵌套字典的情况下找到某个key的value详解
Jul 10 Python
python基于三阶贝塞尔曲线的数据平滑算法
Dec 27 Python
Python脚本去除文件的只读性操作
Mar 05 Python
Python实现在Windows平台修改文件属性
Mar 05 Python
DjangoWeb使用Datatable进行后端分页的实现
May 18 Python
Python脚本如何在bilibili中查找弹幕发送者
Jun 04 Python
利用Python pandas对Excel进行合并的方法示例
Nov 04 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防范SQL注入的具体方法详解(测试通过)
2014/05/09 PHP
深入理解PHP类的自动载入机制
2016/09/16 PHP
PHP+redis实现微博的拉模型案例详解
2019/07/10 PHP
js日历功能对象
2012/01/12 Javascript
jQuery获得指定元素坐标的方法
2015/04/14 Javascript
javascript多行字符串的简单实现方式
2015/05/04 Javascript
JS基于cookie实现来宾统计记录访客信息的方法
2015/08/04 Javascript
简单谈谈javascript Date类型
2015/09/06 Javascript
Bootstrap按钮下拉菜单组件详解
2016/05/10 Javascript
AngularJs directive详解及示例代码
2016/09/01 Javascript
JavaScript微信定位功能实现方法
2016/11/29 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
2017/05/28 Javascript
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
JS脚本实现网页自动秒杀点击
2018/01/11 Javascript
vue基础之使用get、post、jsonp实现交互功能示例
2019/03/12 Javascript
JavaScript实现英语单词题库
2019/12/24 Javascript
JS async 函数的含义和用法实例总结
2020/04/08 Javascript
[03:11]完美世界DOTA2联赛PWL DAY8集锦
2020/11/09 DOTA
老生常谈python的私有公有属性(必看篇)
2017/06/09 Python
python负载均衡的简单实现方法
2018/02/04 Python
django限制匿名用户访问及重定向的方法实例
2018/02/07 Python
Python zip()函数用法实例分析
2018/03/17 Python
Python实现判断一个整数是否为回文数算法示例
2019/03/02 Python
python常用函数与用法示例
2019/07/02 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
2019/09/06 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
2020/04/17 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
东方红海科技面试题软件测试方面
2012/02/08 面试题
函授本科毕业生自我鉴定
2013/10/16 职场文书
《母鸡》教学反思
2014/02/25 职场文书
座谈会主持词
2014/03/20 职场文书
2015关爱留守儿童工作总结
2014/12/12 职场文书
学生保证书
2015/01/16 职场文书
兼职安全员岗位职责
2015/02/15 职场文书
导师工作推荐信
2015/03/27 职场文书
oracle delete误删除表数据后如何恢复
2022/06/28 Oracle