主要内容
- Pandas中 DataFrame 对象数据纵向、横向合并。
- Pandas 中 concat 函数参数理解与简单应用。
- 异常的简单处理。
目的
- 再利用Python开发过程中,常用到 DataFrame 对象的横、纵向合并,所以作此总结。
1. 纵向合并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) # 纵向合并
- 效果图
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) # 横向合并
- 效果图
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']")
- 效果图
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 : , default 0
join : , 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)
- 效果图
参考
- Merge, join, and concatenate
- Python异常处理
- The Python Tutorial » Errors and Exceptions