【Pandas】concat用法和栗子

简介: 比赛中经常用到数据处理,当需要对某些表的列数据进行拼接时则会用到concatAPI,关于直观上的图形拼接栗子可以参考pandas的concat函数和append方法。

一、函数介绍和参数含义

比赛中经常用到数据处理,当需要对某些表的列数据进行拼接时则会用到concatAPI,关于直观上的图形拼接栗子可以参考pandas的concat函数和append方法。

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

其中上面的参数含义为:


objs:Series,DataFrame或Panel对象的序列或映射。如果传递了dict,则排序的键将用作键参数,除非它被传递,在这种情况下,将选择值(见下文)。任何无对象将被静默删除,除非它们都是无,在这种情况下将引发一个ValueError。

axis:{0,1,…},默认为0。沿着连接的轴。

join:{‘inner’,‘outer’},默认为“outer”。如何处理其他轴上的索引。outer为联合和inner为交集。

ignore_index:boolean,default False。如果为True,请不要使用并置轴上的索引值。结果轴将被标记为0,…,n-1。如果要连接其中并置轴没有有意义的索引信息的对象,这将非常有用。

join_axes:Index对象列表。用于其他n-1轴的特定索引,而不是执行内部/外部设置逻辑。

keys:序列,默认值无。使用传递的键作为最外层构建层次索引。如果为多索引,应该使用元组。

levels:序列列表,默认值无。用于构建MultiIndex的特定级别(唯一值)。否则,它们将从键推断。

names:list,default无。结果层次索引中的级别的名称。

verify_integrity:boolean,default False。检查新连接的轴是否包含重复项。这相对于实际的数据串联可能是非常昂贵的。

copy:boolean,default True。如果为False,请勿不必要地复制数据。

二、举例

# -*- coding: utf-8 -*-
"""
Created on Tue Sep 28 10:14:46 2021
@author: 86493
"""
import pandas as pd
s1 = pd.Series(['andy', 'guo'])
s2 = pd.Series(['li', 'fei'])
# 将两个series拼接在一起
pd.concat([s1, s2]) 
"""
0    andy
1     guo
0      li
1     fei
dtype: object
"""
pd.concat([s1, s2], ignore_index = True)  
# 清除之前存在的index,改为从0按顺序开始 
"""
0    andy
1     guo
2      li
3     fei
dtype: object
"""
# 给原来基础上给每个series添加对应的key值
end1 = pd.concat([s1, s2], keys = ['s1', 's2'])
"""
s1  0    andy
    1     guo
s2  0      li
    1     fei
dtype: object
"""
print(end1['s1'])
"""
0    andy
1     guo
dtype: object
"""
print('-'*40)
# 给key加label
end2 = pd.concat([s1, s2], keys = ['s1', 's2'],
          names = ['Series name', 'Row ID'])
print(end2)
"""
Series name  Row ID
s1           0         andy
             1          guo
s2           0           li
             1          fei
dtype: object
"""
print('-'*40)
df1 = pd.DataFrame([['a', 1], ['b', 2]],
                    columns = ['letter' , 'number']) 
print(df1)
"""
  letter  number
0      a       1
1      b       2
"""
print('-'*40)
df2 = pd.DataFrame([['c', 3], ['d', 4]],
                    columns = ['letter' , 'number']) 
print(df2)
print('-'*40)
# 将两个dataframe的指定列拼接在一起
end3 = pd.concat([df1, df2])
print(end3)
"""
  letter  number
0      a       1
1      b       2
0      c       3
1      d       4
"""
print('-'*40)
df3 = pd.DataFrame([['c', '3', 'cat'], ['d', '4', 'dog']],
                   columns = ['letter', 'number', 'animal'])
print("df3:\n", df3)
print('-'*40)
end4 = pd.concat([df1, df3], sort = False) # false则代表没改变columns顺序
print("end4:\n", end4)
print('-'*40)
# 返回两者重复的列,不相同的列不显示
end5 = pd.concat([df1, df3], join = "inner")
print("end5:\n", end5)
print('-'*40)
df4 = pd.DataFrame([['bird', 'polly'], ['monkey', 'george']],
                   columns = ['animal', 'name']) 
end6 = pd.concat([df1, df4], axis = 1) # 垂直拼接
print("end6:\n", end6)
print('-'*40)
df5 = pd.DataFrame([1], index = ['a'])
print("df5:\n", df5)
print('-'*40)
df6 = pd.DataFrame([2], index = ['a'])
print("df6:\n", df6)
print('-'*40)
pd.concat([df5, df6], verify_integrity = True)

结果为:

0    andy
1     guo
dtype: object
----------------------------------------
Series name  Row ID
s1           0         andy
             1          guo
s2           0           li
             1          fei
dtype: object
----------------------------------------
  letter  number
0      a       1
1      b       2
----------------------------------------
  letter  number
0      c       3
1      d       4
----------------------------------------
  letter  number
0      a       1
1      b       2
0      c       3
1      d       4
----------------------------------------
df3:
   letter number animal
0      c      3    cat
1      d      4    dog
----------------------------------------
end4:
   letter number animal
0      a      1    NaN
1      b      2    NaN
0      c      3    cat
1      d      4    dog
----------------------------------------
end5:
   letter number
0      a      1
1      b      2
0      c      3
1      d      4
----------------------------------------
end6:
   letter  number  animal    name
0      a       1    bird   polly
1      b       2  monkey  george
----------------------------------------
df5:
    0
a  1
----------------------------------------
df6:
    0
a  2
----------------------------------------
相关文章
|
6天前
|
数据处理 索引 Python
Pandas中concat的用法
Pandas中concat的用法
52 1
|
6天前
|
存储 数据采集 数据处理
深入探索Pandas的DataFrame:基本用法与案例研究
深入探索Pandas的DataFrame:基本用法与案例研究
|
6天前
|
索引 Python
pandas读取某列、某行数据——loc、iloc用法总结
pandas读取某列、某行数据——loc、iloc用法总结
142 2
|
7月前
|
数据可视化 数据挖掘 数据处理
【100天精通Python】Day58:Python 数据分析_Pandas时间序列数据处理,创建和解析时间数据pd.to_datetime(),.loc[],resample() 用法示例
【100天精通Python】Day58:Python 数据分析_Pandas时间序列数据处理,创建和解析时间数据pd.to_datetime(),.loc[],resample() 用法示例
259 0
|
索引 Python
pandas用法小结(三)
pandas用法小结(三)
71 0
|
索引 Python
pandas用法小结(二)
pandas用法小结(二)
83 0
|
存储 人工智能 Ubuntu
pandas用法小结(一)
pandas用法小结
168 0
|
Python
【Pandas】解析resample函数中重采样频率‘freq‘用法(附参数说明表)
【Pandas】解析resample函数中重采样频率‘freq‘用法(附参数说明表)
420 0
【Pandas】解析resample函数中重采样频率‘freq‘用法(附参数说明表)
|
机器学习/深度学习 人工智能 自然语言处理
高手系列!数据科学家私藏pandas高阶用法大全 ⛵
本文汇总介绍了21个 Pandas 进阶用法,能保持代码整洁优雅,更能提高代码效率!这篇是从数据科学家朋友那里搞到的私藏,快一起薅羊毛~
1200 4
高手系列!数据科学家私藏pandas高阶用法大全 ⛵
|
Python
【Python】【Pandas】使用concat添加行
【Python】【Pandas】使用concat添加行
673 0
【Python】【Pandas】使用concat添加行