pandas合并数据集


import numpy as np
import pandas as pd
# 生成DataFrame的函数
def make_df(col,ind):
    data = {c:[str(c) + str(i) for i in ind] for c in col}
    return pd.DataFrame(data, ind)

# pd.concat()合并时,此方法不会处理索引相同的情况,直接合并为新的索引。
#索引相同处理方法

x = make_df('ab',[0,1])
y = make_df('ab',[3,4])
try:
    pd.concat([x,y],verify_integrity=True)  # 设置verify_integrity参数,若有重复索引,抛出异常
except ValueError as e:
    print('ValueError:',e)

# 根据列名,添加行
pd.concat([x,y],ignore_index=True)  # 设置ignore_index参数,可以忽略索引,将两个数据直接拼接到一起,并创建新的索引

pd.concat([x,y],keys=['x','y'])  # 设置keys参数,可以将两个数据的索引设置成多级索引

df5 = make_df('asd',[1,2])
df6 = make_df('sdf',[3,4])
pd.concat([df5,df6],join='inner')   # 忽略缺失值的列

# df1.append(df2)  和 pd.concat([df1,df2]) 相同
# 根据索引或者某列,添加列,类似于Eecel中的vlookup
pd.merge()
可以实现三种数据类型的连接,一对一,多对一,多对多

pd.merge(df1,df2,on='A')
pd.merge(df1,df2,left_on='A',right_on='b').drop('b',axis=1)
匹配两数据的两列,但是合并后会多出一列相同的,需要删除它,所以加一个drop()

pd.merge(df1,df2,left_index=True,right_index=True)  # 匹配数据的索引
df1.join(df2)  # 等同于上面的

pd.merge(df1,df2,left_index=True,right_on='a')  将df1的索引和df2中‘a’列进行匹配

对于匹配项不完全相同时,默认的是只输出交集
pd.merge(df1,df2,how='inner')  # how=inner(交集)/outer(并集)/left/right

pd.merge(df1,df2,on='a',suffixes=['_L','_R'])
若有两个完全相同的列,函数会自动添加两列,suffixes可以自定义后缀名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力生活的黄先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值