
# concat用于连接df对象,接收一个list类型的参数,里面放等待连接的df
pd.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrety=False, copy=True)
# axis=0表示上下连接,axis=1表示左右连接
# join连接方式,有inner-交集和outer-并集两种,默认为outer
df4 = pd.DataFrame({'B':['B2','B3','B6','B7'], 'D':['D2','D3','D6','D7'],'F':['F2','F3','F6','F7']}, index=[2,3,6,7])
result = pd.concat([df1, df4], axis=1, sort=False, join='outer')
result = pd.concat([df1, df4], axis=1, join='inner')
result = pd.concat([df1, df4], axis=1).reindex(df1.index)
result = pd.concat([df1, df4.reindex(df1.index)], axis=1)
# ignore_index是否按索引聚合,默认为False,若两个表的索引名称不一致,聚合后新的索引名为index
# keys匹配索引,默认为None,在concat后的最外层建立一层索引,接受list类型输入,list大小与objs大小相同,这样做方便抽取聚合前的各个df
result = pd.concat([df1, df2, df3], keys=['x', 'y', 'z'])
df1 = result.loc['x']
# append用于多个df上下拼接
result=df1.append(df2)
result = df1.append(df4, sort=False)
result = df1.append([df2, df3])
result = pd.concat([df1, df4], ignore_index=True, sort=False)
result = df1.concat(df4, ignore_index=True, sort=False)
# 组合多个Series并添加行索引
s1 = pd.Series([0, 1,2,3], name='foo')
s2 = pd.Series([0,1,2,3])
s3 = pd.Series([0,1,2,3])
result = pd.concat([s1, s2, s3], axis=1, keys=['x','y','z'])
等同于
result = pd.concat({'x':s1, 'y':s2, 'z':s3})
# 给DataFrame追加append
s2 =pd.Series(['X0','X1','X2','X3'],index=['A','B','C','D']) # Serires默认按行存储,按列展示
result =df1.append(s2,ignore_index=True) # append为df1添加行
# 合并DataFrame或Series使用pd.merge
pd.merge(left,right,how='inner',on=None,left_on=None,right_on=None,left_index=False,right_index=False,sort=True,suffixes=('_x','_y'),copy=True,indicator=False,validate=None)
# left、right指定待合并的df、Series
# on连接的字段
# left_on 左连接的键,可以是列名、行名、与df长度相同的list类型
# right_on 同上
# left_index 使用左表索引作为连接键
# right_index 使用右表索引作为链接键
# how 支持left、right、outer、inner,默认为inner
# sort 按连接的键对结果排序
# suffixes 结果列名加后缀
# indicator 增加备注列,说明数据来源left_only、 right_only、 both
# validate 默认为None,检查指定的合并模式,支持one_to_one、one_to_many、many_to_one、many_to_many
# join用于根据key连接df对象
pd.join(left, right, on='key', how='left|right|inner')
# append为一个df追加行,只生成数据副本,不修改原数据
df.append(df)
# combine_first使用右边的df值填充左边df中的空值,不改变左表数据,生成数据副本
df1 = df1.combine_first(df2)
# update使用右边的df值填充左边df中的空值,直接改变左表数据
df1.update(df2)
# 使用where实现通用的combine
np.where(pd.isna(x), y, x) #如果pd.isna(x)为true,则取y的值,否则取x中的值
# merge_ordered
pandas.merge_ordered(left, right, on=None, left_on=None, right_on=None,
left_by=None, right_by=None, fill_method=None,
suffixes=('_x', '_y'), how='outer')
# left: 用于连接的 左DataFrame
# right: 用于连接的 右DataFrame
# on: 连接关键字。必须 同时存在于 左DataFrame、右DataFrame
# left_on: 左DataFrame 中用于连接的关键字
# right_on: 右DataFrame 中用于连接的关键字
# left_by: 对 左DataFrame 进行分组的关键字
# right_by: 对 右DataFrame 进行分组的关键字
# left_by、right_by同时为空时,等同于merge
# fill_method: 对缺失数据填充的值
# suffixes: 连接后,同时存在于 左DataFrame、右DataFrame 中的字段,添加的后缀名
# how: 连接方式。默认为 外连接
# merge_asof()类似于有序左连接,只是我们匹配最近的键而不是相等的键。对于左数据帧中的每一行,我们选择右数据帧中on键小于左键的最后一行。两个数据帧必须按键排序。
可选地,asof合并可以执行分组合并。除了on键上最近的匹配外,它还与by键相等地匹配。
# on 连接关键字,右表中的对应值不大于左表中的对应值,相当于使用左表中的对应值生成区间,右表中落在左表中对应区间的会被匹配
# by 连接关键字,右表中的对应值与左表中的对应值相等
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)