DataFrame 对象合并

主要内容

  • Pandas中 DataFrame 对象数据纵向、横向合并。
  • Pandas 中 concat 函数参数理解与简单应用。
  • 异常的简单处理。

目的

  • 再利用Python开发过程中,常用到 DataFrame 对象的横、纵向合并,所以作此总结。

1. 纵向合并DataFrame

  • DataFrame 对象所有列列名一致
df = pd.DataFrame([['bird', 'polly'], ['monkey', 'george']],columns=['animal', 'name'])
df2 = pd.DataFrame([['pig', 'xixi'], ['giraffe', 'feifei']],columns=['animal', 'name'])

pd.concat([df,df2], axis=0) # 纵向合并
  • 效果图
    DataFrame 对象合并_第1张图片

2. 横向合并DataFrame

df3=pd.DataFrame([['a', 1], ['b', 2]],columns=['letter', 'number'])
df4 = pd.DataFrame([['bird', 'polly'], ['monkey', 'george']],columns=['animal', 'name'])

pd.concat([df3,df4], axis=1) # 横向合并
  • 效果图
    DataFrame 对象合并_第2张图片

3. 集成验证(verify_integrity)

  • verify_integrity=true, 合并后的 index 值不能重复;否则抛出异常
df5 = pd.DataFrame([1], index=['a'])
df6 = pd.DataFrame([2], index=['a'])

try:
    print (pd.concat([df5, df6], verify_integrity=False))
except ValueError:
    print ("ValueError: Indexes have overlapping values: ['a']")

# 另一种写法
# except ValueError as args:
#     print (args)
  • 效果图
    DataFrame 对象合并_第3张图片

concat 其他参数

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

Docstring:
    Concatenate pandas objects along a particular axis with optional set logic
along the other axes.

objs             : A sequence or mapping of Series, DataFrame, or Panel objects
axis             : {0/'index', 1/'columns'}, default 0
join             : {'inner', 'outer'}, default 'outer'
join_axes        : list of Index objects
ignore_index     : boolean, default False
keys             : sequence, default None
levels           : list of sequences, default None
names            : list, default None
verify_integrity : boolean, default False
copy             : boolean, default True
  • 具体事例
# coding: utf-8
import pandas as pd

# ## pd.concat 参数测试
s1 = pd.DataFrame(['a', 'b'], columns=['alpha'])
s2 = pd.DataFrame(['c', 'd'], columns=['alpha'])


# ### objs 参数
pd.concat([s1, s2], )


# ### objs、ignore_index 参数
# - 重置索引
pd.concat([s1, s2], ignore_index=True)


# ### objs、keys 参数
pd.concat([s1, s2], keys=['s1', 's2',])


# ### objs、keys、names 参数
pd.concat([s1, s2], keys=['s1', 's2'],names=['Series name', 'Row ID'])


# ### objs、columns 参数
df1=pd.DataFrame([['a', 1], ['b', 2]],columns=['letter', 'number'])
df1


df3 = pd.DataFrame([['c', 3, 'cat'], ['d', 4, 'dog']],columns=['letter', 'number', 'animal'])
df3


# ### objs、join 参数
# - 以内交( inner )方式合并 DataFrame
pd.concat([df1, df3], join="inner")


# ### objs、join 参数
# - 以外交( outer )方式合并 DataFrame
pd.concat([df1, df3], join="outer")


df4 = pd.DataFrame([['bird', 'polly'], ['monkey', 'george']],columns=['animal', 'name'])
df4


# ### objs、axis 参数,横向合并 DataFrame
# - 纵向合并 数据列需一致
pd.concat([df1, df4], axis=1)
  • 效果图
    DataFrame 对象合并_第4张图片

参考

  • Merge, join, and concatenate
  • Python异常处理
  • The Python Tutorial » Errors and Exceptions

你可能感兴趣的:(Python系列,Jupyter,Notebook)