pandas多表操作,groupby,时间操作

本文介绍了Pandas库中的多表操作,包括merge、join、concat、append和combin_first等合并方法,以及groupby的使用。此外,详细讨论了时间操作,如datetime模块的功能,字符串与时间戳、时期的相互转换,以及如何在Pandas中处理时间数据。
摘要由CSDN通过智能技术生成
多表操作
  • merge合并
    pandas.merge可根据一个或多个键将不同DataFrame中的行合并起来
pd.merge(left, right)# 默认merge会将重叠列的列名当做键,即how='inner',有多个重复列名则选取重复列名值都相同的行

# 指定“on”作为连接键,left和right两个DataFrame必须同时存在“on”列,连接键也可N对N(少用)
pd.merge(left, right, on="key")#默认how='inner',两个表取key的交集行,right的的列放在left列右边
pd.merge(left, right, on=["key1", "key2"])#两个表取key1,key2都相同的行,right的的列放在left列右边

pd.merge(left,  right,  left_on="key",  right_on="key")#两个表取key列行相同的行,其他重复列名变为column_x,column_y,与on='key'相同

# suffixes:用于追加到重叠列名的末尾,默认为("_x", "_y")
pd.merge(left,  right,  on="key",  suffixes=("_left",  "_right"))

# 指定连接方式:“inner”(默认),“left”,“right”,“outer”
pd.merge(left, right,on='key' how="outer")#产生以left和right的key值并集的行的dataframe

pd.merge(left_frame, right_frame, on='key', how='left')#产生以left_frame的key所有值为行的dataframe,right_frame中的key没有该值的话那些列数据为NaN

pd.merge(left_frame, right_frame, on='key', how='right')#同上相似

pd.merge(left,  right,  left_on="lkey",  right_on="rkey")#左边表lkey和右边表rkey值相同的行,所有列都显示,重复的_x,_y
  • 索引上的合并(可用join代替,而且join更方便)
# 索引和索引连接
pd.merge(left,  right,  left_index=True,  right_index=True)
# "key"和索引连接
pd.merge(left,  right,  left_on="key",  right_index=True)
# 层次化索引
pd.merge(left,  right,  left_on=["key1", "key2"],  right_index=True)
  • join连接
# 用left的索引和right的索引进行merge
left.join(right)

# 用left的索引和right的“key”进行merge
left.join(right, on="key")

# 层次化索引
left.join(right, on=["key1", "key"])

# join可以合并两张以上的表,而merge只能合并两张表
left.join([right1, right2], how="outer")
  • concat 轴向连接
    pandas.concat可以沿着一条轴将多个表对象堆叠到一起:因为模式how模式是“outer”
# 默认 axis=0 上下拼接,列column重复的会自动合并
pd.concat([df1, df2], axis=0)

# axis=1 左右拼接,行raw/index重复的会自动合并
pd.concat([df1, df2], axis=1)

# 忽略df1和df2原来的index,重新给新的DataFrame设置从0开始的index
pd.concat([df1,df2],  ignore_index=True)
  • append
    使用场景:表头一致的多张表,进行连接(上下连接)
df1.append(df2).append(df3)
  • combin_first 数据填补

使用场景:有两张表left和right

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值