python小点dian儿:使用merge还是join

合并():要注意使用merge还是join
#merge是因为两个合并的对象,有相同的列,merge以这些相同的列为索引进行合并,默认内连接('inner'join),可通过参数how来设置左连接,右连接,全连接其他链接方式。下面的栗子按照索引合并,就会出现两个sorce,不可以join

#join实现按索引合并,而不管他们有么有相同的列,默认链接键上的左连接,同样可以通过参数how更改.同时可以指定on ="keyname',则把两个df 按照索引链接,并将原索引为新的“keyname”列,重新设置0,1,2..的索引

import pandas as pd
df = pd.DataFrame({"key":['green','red', 'blue'],
            "data1":['a','b','c'],"sorce": [33,61,99]})
'''
-------df---------
  data1    key  sorce
0     a  green     33
1     b    red     61
2     c   blue     99
-------df_dummies3-----
-------pd.get_dummies(df)----df_dummies3-----
   sorce  data1_a  data1_b  data1_c  key_blue  key_green  key_red
0     33      1.0      0.0      0.0       0.0        1.0      0.0
1     61      0.0      1.0      0.0       0.0        0.0      1.0
2     99      0.0      0.0      1.0       1.0        0.0      0.0
-------df_dummies6----
    sorce_不及格  sorce_及格  sorce_优秀
0        1.0       0.0       0.0
1        0.0       1.0       0.0
2        0.0       0.0       1.0

'''

#join此处不可以,ValueError: columns overlap but no suffix specified: Index(['sorce'], dtype='object')
#用merge是因为两个合并的对象,有相同的列sorce,merge将以这些相同的列为索引进行拼接。默认内连接,结果是两张表的交集
df_new= pd.merge(df,df_dummies3)
print(df_new)
print(df_new.columns)
----------------
  data1    key  sorce  data1_a  data1_b  data1_c  key_blue  key_green  key_red
0     a  green     33      1.0      0.0      0.0       0.0        1.0      0.0
1     b    red     61      0.0      1.0      0.0       0.0        0.0      1.0
2     c   blue     99      0.0      0.0      1.0       1.0        0.0      0.0
Index(['data1', 'key', 'sorce', 'data1_a', 'data1_b', 'data1_c', 'key_blue',
       'key_green', 'key_red'],
      dtype='object')
 
----------------------
#此处不可以merge, 因为两个没有相同的列。会报错:pandas.tools.merge.MergeError: No common columns to perform merge on
#用join实现按索引合并,而不管他们有没有相同的列.
#同时可以指定on ="keyname',则把两个df 按照索引链接,并将原索引为新的“keyname”列,重新设置0,1,2..的索引,这种方法不设置其他参数的话,等价于marge的左连接
df_new= df.join(df_dummies6)
print(df_new)
print(df_new.columns)
-------------------
data1    key  sorce  sorce_不及格  sorce_及格  sorce_优秀
0     a  green     33        1.0       0.0       0.0
1     b    red     61        0.0       1.0       0.0
2     c   blue     99        0.0       0.0       1.0
Index(['data1', 'key', 'sorce', 'sorce_不及格', 'sorce_及格', 'sorce_优秀'], dtype='object')

作者:shuihupo 
来源:CSDN 
具体详细可转看原文:https://blog.csdn.net/shuihupo/article/details/82717654 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值