问题
【问题一】 请思考什么是append/assign/combine/update/concat/merge/join各自最适合使用的场景,并举出相应的例子。
append:添加一行数据
s = pd.Series({'Gender':'F','Heighe':188},name = 'new_row')
df.append(s)
assign:添加一列数据
s = pd.Series(list('abcd'),index=range(4))
df.assign(Letter=s)
combine:用于表的填充,按照表的顺序轮流进行列的循环,自动索引对齐
df.combine(df_2,lambda x,y:x if x.mean()>y.mean() else y)
updata:直接将右表与左表相同的部分,在左表的基础上进行填充
df.update(df2)
concat:两个表的连接
pd.concat([df1,df3])#上下连接
pd.concat([df1,df3],axis=1)#列方向的连接
merge:将两个表更具一个列或者多列进行横向连接
pd.merge(left,right,on='key')
join:将多个表根据一列或者多列横向连接。
left.join(right)
【问题二】 merge_ordered和merge_asof的作用是什么?和merge是什么关系?
merge_ordered:当没有指定的连接键时,默认使用left和right列的交集将为连接键
merge_asof:增加了更具什么键排序的功能
是merge的补充
【问题三】 请构造一个多级索引与多级索引合并的例子,尝试使用不同的合并函数。
arrays = [['A','a'],['A','b'],['B','a'],['B','b']]
mul_index = pd.MultiIndex.from_tuples(arrays, names=('Upper', 'Lower'))
a = pd.DataFrame({'Score':['perfect','good','fair','bad'],'w':['w','s','d','c']},index=mul_index)
arrays = [['A','a'],['A','b'],['B','a'],['B','b']]
mul_index = pd.MultiIndex.from_tuples(arrays, names=('Upper', 'Lower'))
b = pd.DataFrame({'Score':['perfect','good','fair','bad'],'c':['s','s','d','c']},index=mul_index)
pd.merge(a,b,on='Score')
pd.concat([a,b],axis=1)