Pandas学习总结——5. 合并(append与assign、combine与update、concat、merge与join)

本文总结了Pandas中的数据合并操作,包括append和assign的行列操作,combine和update的表填充,concat的行或列拼接,以及merge和join的横向合并。详细解析了各方法的使用场景、参数和示例,同时提供了问题与练习,帮助读者深入理解这些合并功能。
摘要由CSDN通过智能技术生成

Pandas的合并操作可以概括为以下四类方法:

  • append与assign
  • combine与update
  • concat方法
  • merge与join

1 append与assign

1.1append方法

append方法主要在操作

  • 用Series添加行,必须指定name
  • 用DataFrame添加表。
# 用Series添加行
df_append = df.loc[:3,['Gender','Height']].copy()

s = pd.Series({
   'Gender':'F','Height':188},name='new_row')
df_append.append(s)

# 用DataFrame添加表
df_temp = pd.DataFrame({
   'Gender':['F','M'],'Height':[188,176]},index=['new_1','new_2'])
df_append.append(df_temp)

1.2 assign方法

assign方法主要在操作。列名由参数指定,索引自动对齐。

# 新列名为 Letter
s = pd.Series(list('abcd'),index=range(4))
df_append.assign(Letter=s)

# 一次添加多列(新列名为col1、col2)
df_append.assign(col1=lambda x:x['Gender']*2, col2=s)

2 combine与update

comine和update都是用于表的填充函数,可以根据某种规则填充。

2.1 combine方法

(1)填充对象
combine方法是按照表的顺序轮流进行逐列循环的,而且自动索引对齐,缺失值为NaN。

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

运行结果:

0       M
1       F
10    NaN
11    NaN
Name: Gender, dtype: object 0     NaN
1     NaN
10      M
11      F
Name: Gender, dtype: object
0     173.0
1     192.0
10      NaN
11      NaN
Name: Height, dtype: float64 0       NaN
1       NaN
10    161.0
11    175.0
Name: Height, dtype: float64

由结果可以看出,combine的循环是按照下图所示的顺序进行的。
在这里插入图片描述

(2)例子

# 根据列均值的大小填充
df1 = pd.DataFrame({
   'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({
   'A': [8, 7], 'B': [6, 5]})
df1.combine(df2,lambda x,y:x if x.mean()>y.mean() else y)

# 索引对齐特性(默认状态下,后面的表没有的行列都会设置为NaN)
df2 = pd.DataFrame({
   'B': [8, 7], 'C': [6, 5]},index=[1,2])
df1.combine(df2,lambda x,y:x if x.mean()>y.mean() else y)

# 使得df1原来符合条件的值不会被覆盖
df1.combine(df2,lambda x,y:x if x.mean()>y.mean() else y,overwrite=False) 

# 在新增匹配df2的元素位置填充-1
df1.combine(df2,lambda x,y:x if x.mean()>y.mean() else y,fill_value=-1)

(3)combine_first方法

df1.combine_first(df2)

用df2填补df1的缺失值,功能比较简单,但比combine更常用

2.2 update方法

(1)三个特点

  • 返回的框索引只会与被调用框的一致
  • 第二个框中的nan元素不会起作用
  • 没有返回值,直接在df上操作

(2)例子

# 索引完全对齐的情况。df2 的 B 覆盖 df1 的 B
df1 = pd.DataFrame
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值