【转】PANDAS 数据合并与重塑(concat篇)

转自:http://blog.csdn.net/stevenkwong/article/details/52528616

1 concat

concat函数是在pandas底下的方法,可以将数据根据不同的轴作简单的融合
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是列 
join:连接的方式 inner,或者outer

其他一些参数不常用,用的时候再补上说明。

1.1 相同字段的表首尾相接

# 现将表构成list,然后在作为concat的输入
In [4]: frames = [df1, df2, df3]

In [5]: result = pd.concat(frames)

要在相接的时候在加上一个层次的key来识别数据源自于哪张表,可以增加key参数

In [6]: result = pd.concat(frames, keys=[‘x‘, ‘y‘, ‘z‘])

效果如下

1.2 横向表拼接(行对齐)

1.2.1 axis

当axis = 1的时候,concat就是行对齐,然后将不同列名称的两张表合并

In [9]: result = pd.concat([df1, df4], axis=1)

1.2.2 join

加上join参数的属性,如果为’inner’得到的是两表的交集,如果是outer,得到的是两表的并集。

In [10]: result = pd.concat([df1, df4], axis=1, join=‘inner‘)

1.2.3 join_axes

如果有join_axes的参数传入,可以指定根据那个轴来对齐数据 
例如根据df1表对齐数据,就会保留指定的df1表的轴,然后将df4的表与之拼接

In [11]: result = pd.concat([df1, df4], axis=1, join_axes=[df1.index])

1.3 append

append是series和dataframe的方法,使用它就是默认沿着列进行凭借(axis = 0,列对齐)
In [12]: result = df1.append(df2)

1.4 无视index的concat

如果两个表的index都没有实际含义,使用ignore_index参数,置true,合并的两个表就睡根据列字段对齐,然后合并。最后再重新整理一个新的index。 

1.5 合并的同时增加区分数据组的键

前面提到的keys参数可以用来给合并后的表增加key来区分不同的表数据来源

1.5.1 可以直接用key参数实现

In [27]: result = pd.concat(frames, keys=[‘x‘, ‘y‘, ‘z‘])

1.5.2 传入字典来增加分组键

In [28]: pieces = {‘x‘: df1, ‘y‘: df2, ‘z‘: df3}

In [29]: result = pd.concat(pieces)

1.6 在dataframe中加入新的行

append方法可以将 series 和 字典就够的数据作为dataframe的新一行插入。 

In [34]: s2 = pd.Series([‘X0‘, ‘X1‘, ‘X2‘, ‘X3‘], index=[‘A‘, ‘B‘, ‘C‘, ‘D‘])

In [35]: result = df1.append(s2, ignore_index=True)

表格列字段不同的表合并

如果遇到两张表的列字段本来就不一样,但又想将两个表合并,其中无效的值用nan来表示。那么可以使用ignore_index来实现。

In [36]: dicts = [{‘A‘: 1, ‘B‘: 2, ‘C‘: 3, ‘X‘: 4},
   ....:          {‘A‘: 5, ‘B‘: 6, ‘C‘: 7, ‘Y‘: 8}]
   ....: 

In [37]: result = df1.append(dicts, ignore_index=True)

原文地址:https://www.cnblogs.com/stAr-1/p/8259865.html

时间: 2024-10-21 13:37:04

【转】PANDAS 数据合并与重塑(concat篇)的相关文章

【数据分析&数据挖掘】pandas数据合并

1 import pandas as pd 2 3 # 加载数据 4 data_1 = pd.read_excel("./concat合并数据.xlsx", sheetname=0) 5 data_2 = pd.read_excel("./concat合并数据.xlsx", sheetname=1) 6 7 print("data_1: \n", data_1) 8 print("data_2: \n", data_2) 9

pandas数据大发888平台出租规整化:清理、转换、合并、重塑

数据分析和大发888平台出租haozbbs.comQ1446595067建模方面的大量编程工作都是用在数据准备上的:加载.清理.转换以及重塑.许多人选择使用通用编程语言或unix文本处理工具(如sed或awk)对数据格式进行专门处理. 幸运的是,pandas和python标准库提供了一组高级的.灵活的.高效的核心函数和算法,将数据规整化正确的形式. 合并数据集: pandas对象中的数据可以通过一些内置的方式进行合并:(1)pandas.merge可根据一个名多个键将不同DataFrame中的行

利用Python进行数据分析-Pandas(第五部分-数据规整:聚合、合并和重塑)

在许多应用中,数据可能分散在许多文件或数据库中,存储的形式也不利于分析.本部分关注可以聚合.合并.重塑数据的方法. 1.层次化索引 层次化索引(hierarchical indexing)是pandas的一项重要功能,它使你能在一个轴上拥有多个(两个以上)索引级别.抽象点说,它使你能以低纬度形式处理高纬度数据.我们来看一个简单的栗子:创建一个Series,并用一个由列表或数组组成的列表作为索引: data = pd.Series(np.random.randn(9), index=[['a',

利用Python进行数据分析——数据规整化:清理、转换、合并、重塑(七)(2)

1.索引上的合并 有时候,DataFrame中的连接键位于其索引中.在这种情况下,你可以传入left_index = True或right_index = True(或两个都传)以说明索引应该被用作连接键: In [8]: left1 = pd.DataFrame({'key': ['a', 'b', 'a', 'a', 'b', 'c'], ...: 'value':range(6)}) In [9]: right1 = pd.DataFrame({'group_val':[3.5, 7]},

pandas小记:pandas数据规整化

http://blog.csdn.net/pipisorry/article/details/39506169 数据分析和建模方面的大量编程工作都是用在数据准备上的:加载.清理.转换以及重 塑.有时候,存放在文件或数据库中的数据并不能满足数据处理应用的要求. pandas和Python标准库提供了一组高级的.灵活的.高效的核心函数和算法,它们能够轻松地将数据规整化为正确的形式. 数据正则化data normalization pandas.dataframe每行都减去行平均值 use DataF

pandas的学习6-合并concat

import pandas as pd import numpy as np ''' pandas处理多组数据的时候往往会要用到数据的合并处理,使用 concat是一种基本的合并方式. 而且concat中有很多参数可以调整,合并成你想要的数据形式. ''' # todo axis (合并方向) # axis=0是预设值,因此未设定任何参数时,函数默认axis=0. #定义资料集 df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a','b','c','

angular2^ typescript 将 文件和Json数据 合并发送到服务器(1.客户端处理)

首先介绍下框架基本流程   (web > webservice  [前端架构] ) > (nodejs [ 数据中转站 ]) >(api [后台接口]) --web (html  angular 框架) --webservice(angular 中 编写的service文件 ,在此处原本可以使用 [ng2-file-upload]插件 文件+参数 合并提交,但是在我的项目中  请求需要统一提交,所以在此处 使用第三方插件不太适用 所以自己编写了XMLHttpRequest 进行 form

数据合并

主目录 数据合并:  merge, concat, cumsum 持续更新..... 原文地址:https://www.cnblogs.com/zeroones/p/9022480.html

Oracle 数据库实现数据合并:merge

1.使用update进行数据更新 1)最简单的更新 update tablea a set a.price=1.00 2)带条件的数据更新 update tablea a set a.price = 2.00  where  a.id='02' 3)两张表关联更新为固定值 update tablea a set a.price =3.00 where exits(select 1 from tableb b where a.id=b.id) 将a,b相同id的 a表的price 字段更新为 3.