0
点赞
收藏
分享

微信扫一扫

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 对象合并_concat

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 对象合并_df合并_02

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 对象合并_DataFrame_03

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 对象合并_df合并_04

参考

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


举报

相关推荐

0 条评论