Pandas学习 - 合并

一、append和assign

1. append

# 首先写一个实例
df_append = df.loc[0:3, ['Gender','Height','Weight']].copy()
df_append

Pandas学习 - 合并_第1张图片

# 然后用append方法添加行
s = pd.Series({'Gender':'F','Height':163,'Weight':50},name='whx')
df_append.append(s)

Pandas学习 - 合并_第2张图片

上面是添加列,下面我们写添加表。

d = pd.DataFrame({'Gender':['F','M'],'Height':[168,176],'Weight':[55,65]},index=['new_1','new_2'])
df_append.append(d)

Pandas学习 - 合并_第3张图片

2. assign
assign主要用于添加列

# 一列的值
m = pd.Series(list('abcd'),index=range(4))
# 指定列名
df_append.assign(Letter=m)

Pandas学习 - 合并_第4张图片

二、combine与update

1. combine

(a)填充对象

df_combine_1 = df.loc[:1,['Gender','Height']].copy()
df_combine_2 = df.loc[10:11,['Gender','Height']].copy()
df_combine_1.combine(df_combine_2,lambda x,y:print(x,y))

(b)combine_first

这个方法作用是用df2填补df1的缺失值,功能比较简单,但很多时候会比combine更常用

df1 = pd.DataFrame({'A': [None, 0], 'B': [None, 4]})
df2 = pd.DataFrame({'A': [1, 1], 'B': [3, 3]})
df1.combine_first(df2)

在这里插入图片描述

2. update

三、concat

df1 = pd.DataFrame({'A': ['A0', 'A1'],
                    'B': ['B0', 'B1']},
                    index = [0,1])
df2 = pd.DataFrame({'A': ['A2', 'A3'],
                    'B': ['B2', 'B3']},
                    index = [2,3])
df3 = pd.DataFrame({'A': ['A1', 'A3'],
                    'D': ['D1', 'D3'],
                    'E': ['E1', 'E3']},
                    index = [1,3])
# 默认纵向拼接
pd.concat([df1,df2])
# 横向拼接,缺失值为nan
pd.concat([df1,df2],axis=1)
# 内联结
pd.concat([df3,df1],join='inner')
# 外联结
pd.concat([df3,df1],join='outer',sort=True) #sort设置列排序,默认为False

四、merge与join

1. merge

merge函数的作用是将两个pandas对象横向合并,遇到重复的索引项时会使用笛卡尔积,默认inner连接,可选left、outer、right连接
所谓左连接,就是指以第一个表索引为基准,右边的表中如果不再左边的则不加入,如果在左边的就以笛卡尔积的方式加入
merge/join与concat的不同之处在于on参数,可以指定某一个对象为key来进行连接

left = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],
                     'key2': ['K0', 'K1', 'K0', 'K1'],
                      'A': ['A0', 'A1', 'A2', 'A3'],
                      'B': ['B0', 'B1', 'B2', 'B3']}) 
right = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
                      'key2': ['K0', 'K0', 'K0', 'K0'],
                      'C': ['C0', 'C1', 'C2', 'C3'],
                      'D': ['D0', 'D1', 'D2', 'D3']})
right2 = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],
                      'key2': ['K0', 'K0', 'K0', 'K0'],
                      'C': ['C0', 'C1', 'C2', 'C3']})
# 单键准则
pd.merge(left, right, on='key1')
# 多键准则
pd.merge(left, right, on=['key1','key2'])

2. join

join函数作用是将多个pandas对象横向拼接,遇到重复的索引项时会使用笛卡尔积,默认左连接,可选inner、outer、right连接

你可能感兴趣的:(python学习)