pandas的使用(concat篇)

谈到pandas数据的行更新、表合并平,一般的方法有concat、join、merge。我来说下他们的使用场景和用途。

主要来自pandas官方中关于数据合并和重述的使用方法的总结。

代码由pandas官网提供,小编运行了一遍。

concat

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

参数说明

object:series,dataframe或则是panel构成的序列list

axis:需要合并连接的轴,0是行,1是列

join:连接的方式inner,或者outer

1,相同字段的表首尾相连

#frames=[df1,df2,df3]

result=pd.concat(frames)

#效果如下

#如果在连接的时候加上一个key来识别数据来源于那张表,可以增加可以参数

result=pd.concat(frames,keys=['x','y','z'])

如下效果

 

2,横向拼接(行对齐)

2.1axis

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

#result=pd.concat([df1,df4],axis=1)

3 join

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

result=pd.concat([df1,df4],axis=1,join='inner')

4,join_axes

如果是join_axes的参数传入,可以指定根据那个轴来对齐数据

例如根据df1表对齐数据,就会保留指定的df1表的轴,然后将df4的表与之拼接

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

 

5,appeng

#append是series和dataframe的方法,使用他就是默认沿着行(axis=0,列对齐)

result=df1.append(df2)

 

6,可以无视index的concat

当两个表的index没有实际意义时,使用ignore_index参数,为true时,合并的两个表

就根据列字段对齐,然后合并,最后真理新的index

 

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

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

result = pd.concat(frames,keys=['x','y','z']

8,传入字典来增加分组键

jia={'x':df1,'y':df2,'z':df3}

result=pd.concat(jia)

9,在dataframe中加入新的行

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

pd.series(['x0','x1','x2','x3'],index=['A','B','C','D'])

result=df1.append(s2,ignore_index=True)

10,表格字段不同的表合并

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

result = df1.append(dicts, ignore_index=True)

以上是concat篇的内容,有建议请指正,微信:17576052970

 

 

  • 11
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
pandas.concat() 函数可以用于将多个 pandas 数据框(DataFrame)或序列(Series)沿着指定的轴进行连接。以下是 pandas.concat() 函数的语法: ```python pandas.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=True) ``` 参数说明: - `objs`:要连接的 pandas 数据框或序列的列表。 - `axis`:指定沿着哪个轴进行连接,0 表示沿着行方向进行连接,1 表示沿着列方向进行连接。 - `join`:指定连接方式,可以是 'inner' 或 'outer'。默认是 'outer',表示并集。 - `ignore_index`:表示是否忽略原始数据框的索引,并且创建新的索引。默认是 False。 - `keys`:用于在连接轴上创建层次化索引的标记数组(列表)。 - `levels`:用于创建层次化索引的标签,如果 keys 指定了多个标记数组,levels 参数就是对应每个标记数组的层级。 - `names`:用于创建层次化索引的名称列表。 - `verify_integrity`:表示是否检查连接的数据框中是否存在重复的索引值。默认是 False。 - `sort`:表示是否按照字典序(lexicographically)对连接轴上的索引进行排序。默认是 False。 - `copy`:表示是否复制数据。默认是 True,即复制。 以下是一个示例: ```python import pandas as pd df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'], 'B': ['B0', 'B1', 'B2', 'B3'], 'C': ['C0', 'C1', 'C2', 'C3'], 'D': ['D0', 'D1', 'D2', 'D3']}) df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'], 'B': ['B4', 'B5', 'B6', 'B7'], 'C': ['C4', 'C5', 'C6', 'C7'], 'D': ['D4', 'D5', 'D6', 'D7']}) df3 = pd.DataFrame({'A': ['A8', 'A9', 'A10', 'A11'], 'B': ['B8', 'B9', 'B10', 'B11'], 'C': ['C8', 'C9', 'C10', 'C11'], 'D': ['D8', 'D9', 'D10', 'D11']}) # 沿着行方向进行连接 result = pd.concat([df1, df2, df3]) print(result) # 沿着列方向进行连接 result = pd.concat([df1, df2, df3], axis=1) print(result) ``` 输出结果: ``` A B C D 0 A0 B0 C0 D0 1 A1 B1 C1 D1 2 A2 B2 C2 D2 3 A3 B3 C3 D3 0 A4 B4 C4 D4 1 A5 B5 C5 D5 2 A6 B6 C6 D6 3 A7 B7 C7 D7 0 A8 B8 C8 D8 1 A9 B9 C9 D9 2 A10 B10 C10 D10 3 A11 B11 C11 D11 A B C D A B C D A B C D 0 A0 B0 C0 D0 A4 B4 C4 D4 A8 B8 C8 D8 1 A1 B1 C1 D1 A5 B5 C5 D5 A9 B9 C9 D9 2 A2 B2 C2 D2 A6 B6 C6 D6 A10 B10 C10 D10 3 A3 B3 C3 D3 A7 B7 C7 D7 A11 B11 C11 D11 ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值