Pandas中的concat语法_13

在这里插入图片描述

import numpy as np
import pandas as pd

"""
本节主要介绍pandas中的merge语法
使用的是知名的电影数据集,ratings.dat,users.dat,movies.dat
"""
df_rating = pd.read_csv(
    './rating.dat',
    sep='::',
    engine='python',
    names='UserID::MovieID::Rating::Timestamp'.split('::')
)

df_users = pd.read_csv(
    './users.dat',
    sep='::',
    engine='python',
    names='UserID::Gender::Age::Occupation::Zip-code'.split('::')
)

df_movies = pd.read_csv(
    './movies.dat',
    sep='::',
    engine='python',
    names='MovieID::Title::Genres'.split('::')
)

df_rating_users = pd.merge(df_rating,df_users,left_on='UserID',right_on='UserID',how='inner')
df_rating_users_movies = pd.merge(df_rating_users,df_movies,left_on='MovieID',right_on='MovidID',how='inner')

# 理解merge时数量的对齐关系
"""
one_to_one
one_to_many
many_to_many
"""
# 1.one_to_one
left = pd.DataFrame({
    'sno': [1,2,3,4],
    'name': ['name_a','name_b','name_c','name_d']
})

right = pd.DataFrame({
    'sno':[2,3,4,5],
    'age':['11','12','13','14']
})

one_to_one = pd.merge(left,right,on='sno')

# 2.one_to_many
left = pd.DataFrame({
    'sno': [1,2,3,4],
    'name': ['name_a','name_b','name_c','name_d']
})

right = pd.DataFrame({
    'sno':[2,2,3,3,4,5],
    'age':['11','12','15','12','13','14']
})

one_to_many = pd.merge(left,right,on='sno')

# 3.many_to_many
left = pd.DataFrame({
    'sno': [1,2,2,3,3,4],
    'name': ['name_a','name_b','name_b1','name_c','name_c1','name_d']
})

right = pd.DataFrame({
    'sno':[2,2,3,3,4,5],
    'age':['11','12','15','12','13','14']
})

many_to_many = pd.merge(left,right,on='sno')

# 理解left join、right join、inner join、outer join
left = pd.DataFrame({
    'key':['k0','k1','k2','k3','k4'],
    'A':['A0','A1','A2','A3','A4'],
    'B':['B0','B1','B2','B3','B4']
})

right = pd.DataFrame({
    'key': ['k0', 'k1', 'k2', 'k7', 'k8'],
    'C': ['C0', 'C1', 'C2', 'C3', 'C4'],
    'D': ['D0', 'D1', 'D2', 'D3', 'D4']
})

# inner join,左边和右边的key都有才会出现在结果里
inner_join = pd.merge(left,right,how='inner')

# 左边的都会出现在结果里,右边无法匹配则为null
left_join = pd.merge(left,right,how='left')

# 右边的都会出现在结果里,左边无法匹配则为null
right_join = pd.merge(left,right,how='right')

# 左边,右边的都会出现在结果里,如果无法匹配则为null
outer_join = pd.merge(left,right,how='outer')



# 理解如果出现非key的字段重名怎么办
left = pd.DataFrame({
    'key':['k0','k1','k2','k3','k4'],
    'A':['A0','A1','A2','A3','A4'],
    'B':['B0','B1','B2','B3','B4']
})

right = pd.DataFrame({
    'key': ['k0', 'k1', 'k2', 'k7', 'k8'],
    'A': ['C10', 'C11', 'C12', 'C13', 'C14'],
    'D': ['D0', 'D1', 'D2', 'D3', 'D4']
})

value_1 = pd.merge(left,right,on='key')
value_2 = pd.merge(left,right,on='key',suffixes=('_left','_right'))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: pandas.concat 是一个函数,用于将多个 Pandas 数据框(DataFrame)或者 Pandas 系列(Series)按照指定的轴进行连接。它可以按照行或者列方向进行连接,具体实现方式取决于指定的轴参数。 语法如下: ``` pandas.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=True) ``` 参数说明: - objs: 一个列表或者字典,里面包含了要连接的 Pandas 数据框或者 Pandas 系列。 - axis: 指定要连接的轴,0 表示按照行方向连接,1 表示按照列方向连接,默认为 0。 - join: 指定连接方式,可以是 'inner' 或者 'outer',默认为 'outer'。 - ignore_index: 如果为 True,则忽略原来数据框的索引,重新生成一个新的索引。 - keys: 在连接多个数据框的时候,可以使用 keys 参数来指定每个数据框的标签,这样连接之后的数据框就会使用 MultiIndex 来表示。 - levels: 如果使用 keys 参数指定了标签,那么可以使用 levels 参数来指定每个标签的层级结构。 - names: 如果使用 keys 参数指定了标签,那么可以使用 names 参数来指定每个层级的名称。 - verify_integrity: 如果为 True,则在连接之前检查数据框是否有重复的索引,如果有则抛出 ValueError 异常。 - sort: 如果为 True,则在连接之后对结果进行排序,默认为 False。 - copy: 如果为 True,则返回连接之后的新对象,否则返回原对象的视图。 示例: ``` import pandas as pd # 创建两个数据框 df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}) df2 = pd.DataFrame({'A': [4, 5, 6], 'B': [7, 8, 9]}) # 将两个数据框按照行方向连接 result = pd.concat([df1, df2], axis=0) print(result) ``` 输出: ``` A B 0 1 4 1 2 5 2 3 6 0 4 7 1 5 8 2 6 9 ``` ### 回答2: pandas.concat是一个用于在pandas合并数据的函数。它可以水平或垂直地连接不同的数据集,产生一个新的数据集。 pandas.concat函数可以接受多个数据集作为参数,并根据指定的轴进行连接。默认情况下,它会在轴0上进行连接,即垂直连接,将数据集按顺序堆叠起来。例如,如果我们有两个数据集df1和df2,通过pandas.concat([df1, df2])就可以将它们垂直连接起来。 此外,我们还可以通过指定axis参数来进行水平连接。当axis=1时,pandas.concat会将数据集在水平方向上连接起来。这意味着我们可以根据列名在水平方向上合并数据集,产生新的列。需要注意的是,进行水平连接时,数据集必须有相同的行索引,否则连接将会失败。 在进行连接时,pandas.concat还有其他一些重要的参数。其,join用于指定连接的方式,默认为'outer',表示采用外连接,即保留所有行和列。如果选择'inner',则只保留两个数据集交集部分的行和列。另外,我们还可以通过keys参数为连接之后的数据集添加层次化索引。 总之,pandas.concat是一个非常有用的函数,可以将多个数据集合并成一个新的数据集,扩展数据分析的能力。无论是垂直连接还是水平连接,我们都可以根据实际需求选择适当的参数和方法。 ### 回答3: pandas.concat是一个在pandas用于合并/连接数据的函数。它可以将多个数据集按照指定的轴方向进行连接,产生一个新的数据集。 pandas.concat函数的常见用法是将具有相同结构的数据集进行拼接。例如,我们可以使用concat函数将两个具有相同列名的DataFrame对象连接成一个新的DataFrame对象。连接时可以指定连接的轴方向,默认为0,即按行进行拼接。我们还可以通过设置axis参数来指定为1,表示按列进行连接。 除了连接具有相同结构的数据集外,pandas.concat函数还可以用于连接具有不同结构的数据集。在这种情况下,我们可以使用join参数来指定连接方式,有inner、outer、left和right四种连接方式可供选择。默认情况下,join为outer,表示使用外连接的方式进行连接。 此外,pandas.concat函数还可以通过设置keys参数来为合并后的数据集增加层次化索引。如果我们传递一个列表给keys参数,合并后的数据集将具有多个层次的索引,其每个层次对应一个列表的元素。 总之,pandas.concat函数是一个非常灵活和强大的工具,它能够方便地处理数据集的合并和连接操作,提供了多种参数和选项来满足不同的需求。使用这个函数可以轻松地将多个数据集合并成一个,为数据处理和分析提供了很大的便利性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值