Python_数据科学库_数据的合并与分组聚合

这篇博客详细介绍了Python中数据合并的方法,包括join和merge,并解释了如何使用on和how参数。此外,还讨论了如何在DataFrame上进行分组操作,如计算统计指标。最后,提到了简单的索引和复合索引操作,如设置和重置索引。
摘要由CSDN通过智能技术生成

1 数据合并之join

join:默认情况下他是把行索引相同的数据合并到一起

在这里插入图片描述

import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.ones((2,4)),index=['A','B'],columns=list('abcd'))
df2 = pd.DataFrame(np.zeros((3,3)),index=['A','B','C'],columns=list('xyz'))
print(df1)
#      a    b    c    d
# A  1.0  1.0  1.0  1.0
# B  1.0  1.0  1.0  1.0
print(df2)
#      x    y    z
# A  0.0  0.0  0.0
# B  0.0  0.0  0.0
# C  0.0  0.0  0.0
df3 = df1.join(df2) #行数以df1为准
print(df3)
#      a    b    c    d    x    y    z
# A  1.0  1.0  1.0  1.0  0.0  0.0  0.0
# B  1.0  1.0  1.0  1.0  0.0  0.0  0.0
df4 = df2.join(df1) #行数以df2为准,df1中的没有值为nan
print(df4)
#      x    y    z    a    b    c    d
# A  0.0  0.0  0.0  1.0  1.0  1.0  1.0
# B  0.0  0.0  0.0  1.0  1.0  1.0  1.0
# C  0.0  0.0  0.0  NaN  NaN  NaN  NaN

2 数据合并之merge

merge:按照指定的列把数据按照一定的方式合并到一起

  • 当两个dataframe具有相同的column时,若两个column中没有相同的value,则会merge一个空的dataframe

  • 直接使用merge合并两个DataFrame, res = pd.merge(left,right) ,不加任何属性参数的情况下,默认是inner合并

  • res = pd.merge(left,right,on=‘key’),当加上on属性的时候,是基于key列来合并,通过key的每一个值来查找左右两边的数据,组成新的DataFrame

  • merge操作实现两个DataFrame之间的合并。merge的使用方法及参数解释如下:

pd.merge(left, right, on=None, how='inner', left_on=None, right_on=None, left_index=False, right_index=False, 
     sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)
  • left和right:第一个DataFrame和第二个DataFrame对象,merge只能实现两个DataFrame的合并,无法一次实现多个合并

  • how:合并的方式,默认为inner取参考column的交集,outer取并集保留所有行;outer、left、right中的缺失值都以NaN填充;left按照左边对象为参考进行合并即保留左边的所有行,right按照右边对象为参考进行合并即保留右边所有行,

  • left_on=None和right_on=None:以上on是在两个df有相同的column的情况下使用,如果两个df没有相同的column,使用left_on和right_on分别指明左边和右边的参考column

  • left_index和right_index:指定是否以索引为参考进行合并

  • sort:合并结果是否按on指定的参考进行排序

  • suffixed:合并后如果有重复column,分别加上什么后缀

  • on:指定参考column,如果不指定默认为None,以两者相同列的最多数为参考;index重新生成为从0开始的整数。

import pandas as pd
df1 = pd.DataFrame({
   'key1':['a','b','c','d'],'key2':['e','f','g','h'],'key3':['i','j','k','l']}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值