pandas---DataFrame基本操作(二)

相关知识

concat合并:

pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,  
                  keys=None, levels=None, names=None, verify_integrity=False)  

 

objs: series,dataframe或者是panel构成的序列lsit。

axis: 需要合并链接的轴,0是行,1是列,默认为axis=0。

join:连接的方式 inner,或者outer,默认为join=‘outer’

keys:合并的同时增加分区。

ignore_index:忽略索引,默认为False,当为True时,合并的两表就按列字段对齐。

merge合并:

pandas的merge方法提供了一种类似于SQL的内存链接操作,官网文档提到它的性能会比其他开源语言的数据操作(例如R)要高效。

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,  
         left_index=False, right_index=False, sort=True,  
         suffixes=('_x', '_y'), copy=True, indicator=False,validate=None)  

 

merge的参数:

left/right:两个不同的DataFrame

on:指的是用于连接的列索引名称。必须存在右右两个DataFrame对象中,如果没有指定且其他参数也未指定则以两个DataFrame的列名交集做为连接键

left_on:左则DataFrame中用作连接键的列名;这个参数中左右列名不相同,但代表的含义相同时非常有用。right_on:右则DataFrame中用作 连接键的列名。

left_index:使用左则DataFrame中的行索引做为连接键。

right_index:使用右则DataFrame中的行索引做为连接键。

how:指的是合并(连接)的方式有inner(内连接),left(左外连接),right(右外连接),outer(全外连接);默认为inner。

sort:根据DataFrame合并的keys按字典顺序排序,默认是True,如果置false可以提高表现。

suffixes:字符串值组成的元组,用于指定当左右DataFrame存在相同列名时在列名后面附加的后缀名称,默认为('_x','_y')

copy:默认为True,总是将数据复制到数据结构中;大多数情况下设置为False可以提高性能

indicator:在 0.17.0中还增加了一个显示合并数据中来源情况;如只来自于左边(left_only)、两者(both)。

merge的默认合并方法:merge用于表内部基于 index-on-index 和 index-on-column(s) 的合并,但默认是基于index来合并。

 

join连接:主要用于索引上的合并

join(self, other, on=None, how='left', lsuffix='', rsuffix='',sort=False)   

 

其中参数的意义与merge方法基本相同,只是join方法默认为左外连接how=left

1.默认按索引合并,可以合并相同或相似的索引,不管他们有没有重叠列。

2.可以连接多个DataFrame

3.可以连接除索引外的其他列

4.连接方式用参数how控制

5.通过lsuffix='', rsuffix='' 区分相同列名的列

 

练习pandas中DataFrame的修改元素值、缺失值处理、合并操作

1.打开终端模拟器,在命令行输入ipython notebook --ip='127.0.0.1',在浏览器中会打开下面界面,点击New,在其下拉框中选择Python3.

2.新建一个ipynb文件,用于编写并执行代码。

3.通过字典对象创建一个DataFrame。

import numpy as np  
import pandas as pd  
dates = pd.date_range('20130101', periods=6)  
df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))  
print(df)  

 

4.新建一个值为[1,2,3,4,5,6],索引index为2013-01-02到2013-01-07的Series,并将series赋值给df作为df新增的F列。

5.通过at方法把满足df中dates[0],列A的值修改为0。

df.at[dates[0],'A']=0  
print(df)  

 

6.使用iat方法修改df中行下标为0,列下标为1的值等于0.

df.iat[0,1]=0  
print(df)  

 

7.使用loc方法把df的D列值修改为5*len(df)。

df.loc[:,'D']=np.array([5]*len(df))  
print(df)  

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值