pandas 中 DataFrame相关的合并函数总结1

本文总结了Pandas中DataFrame的合并操作,包括使用append函数添加行,如DataFrame、Series和字典的合并,特别强调了Series的index匹配和ignore_index的使用。同时,介绍了combine函数按列合并的功能,如何根据指定函数融合相同列,并展示了字段维度合并的选择策略,以及fill_value参数对空值处理的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pandas 中 DataFrame相关的合并函数总结

  1. append:添加行
    函数功能:将DataFrame/Series/字典形式的数据,或者其列表添加到调用对象中,返回一个新的DataFrame
    例:
    (1)添加DataFrame:
df = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'), index=['x', 'y'])
df
	A	B
x	1	2
y	3	4
df2 = pd.DataFrame([[5, 6], [7, 8]], columns=list('AB'), index=['x', 'y'])
df.append(df2)
   A  B
x  1  2
y  3  4
x  5  6
y  7  8

(2)添加Series

df = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'), index=['x', 'y'])
s1 = pd.Series([9,10],name='z',index =list('AB') )
df.append(s1)
	A	B
x	1	2
y	3	4
z	9	10
#Series的index和调用的DataFrame不一致
s1 = pd.Series([9,10],name='z',index =list('CD') )
df.append(s1)
A	B	C	D
x	1.0	2.0	NaN	NaN
y	3.0	4.0	NaN	NaN
z	NaN	NaN	9.0	10.0
#Series没有设置name属性
s1 = pd.Series([9,10],index =list('AB') )
df.append(s1,ignore_index=True)
A	B
0	1	2
1	3	4
2	9	10

注意:Series 的index需要和DataFrame的列一致,否则得到更多的列;
另外,如果添加的Series没有设置name属性,则需要将append函数中的ignore_index设置为True
(3) 添加字典

df = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'), index=['x', 'y'])
m = {'A':11,'B':12}
df.append(m,ignore_index=True)
A	B
0	1	2
1	3	4
2	11	12

注意:当添加对象是字典时,ignore_index属性必须设置为True

  1. combine:按列合并
    combine 必填参数有两个,other:联合的另一个DataFrame,func:将两个DataFrame 中的相同列作为输入、合并,最后输出一列。

(1)列维度合并

#选取总和最小的列
df1 = pd.DataFrame({'A': [0, 1], 'B': [4, 5]})
df2 = pd.DataFrame({'A': [1, 1], 'B': [3, 3]})
take_smaller = lambda s1, s2: s1 if s1.sum() < s2.sum() else s2
df1.combine(df2, take_smaller)
	A	B
0	0	3
1	1	3

解释:df1 A列的总和为1,df2 A列的总和为2,因为取总和最小的列,所以结果A 列返回的是df1的A列。同理,df1 B列的总和为9,df2 B列的总和为6,所以结果B列返回的是df2的B列

(2)字段维度选择

df1 = pd.DataFrame({'A': [5, 0], 'B': [2, 4]})
df2 = pd.DataFrame({'A': [1, 1], 'B': [3, 3]})
df1.combine(df2, np.minimum)
	A	B
0	1	2
1	0	3

解释:返回的结果是将两个DataFrame中,每一个元素进行比较,选出最小值。
例如,结果中 0行A列是比较 df1中0行A列的值5和 df2中0行A列的值1,选出最小值1返回。

参数:fill_value 可以对列中的空值进行赋值

df1 = pd.DataFrame({'A': [0, 0], 'B': [None, 4]})
df2 = pd.DataFrame({'A': [1, 1], 'B': [1, 3]})
df1.combine(df2, take_smaller, fill_value=-5)
	A	B
0	0	-5.0
1	0	4.0

如果fill_value 没有传参,这默认None值默认不做处理

df1 = pd.DataFrame({'A': [0, 0,0],'B': [None, 4,None]})
df2 = pd.DataFrame({'A': [1, 1,1], 'B': [0, 3,None]})
df1.combine(df2, take_smaller)
	A	B
0	0	0.0
1	0	3.0
2	0	NaN
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值