【数据分析面试】4.寻找超过100元的订单 (Python:merge和concat用法)

在这里插入图片描述

题目:寻找超过100元的订单

你被给定了两个数据:transactionsproducts

transactions包含了交易ID、产品ID以及每个产品销售的总金额。

products包含了产品ID和价格。

编写一个函数,返回一个数据表格,其中包含每个总价值超过100美元的交易。在新数据中包括交易的总价值作为新列。

示例:

输入:

import pandas as pd

transactions = {"transaction_id" : [1, 2, 3, 4, 5], 
				"product_id" : [101, 102, 103, 104, 105], 
				"amount" : [3, 5, 8, 3, 2]}

products = {"product_id" : [101, 102, 103, 104, 105], 
			"price" : [20.00, 21.00, 15.00, 16.00, 52.00]}

df_transactions = pd.DataFrame(transactions)

df_products = pd.DataFrame(products)

输出:

transaction_idproduct_idamounttotal_value
21025105.00
31038120.00
51052104.00

答案

def get_high_value_transactions(transactions, products):
    # Merge transactions and products dataframes on product_id
    merged_df = pd.merge(transactions, products, on='product_id', how='left')
    
    # Calculate total value for each transaction
    merged_df['total_value'] = merged_df['amount'] * merged_df['price']
    
    # Filter transactions with total value over $100
    high_value_transactions = merged_df[merged_df['total_value'] > 100]
    
    return high_value_transactions


Python语法总结——concat()merge() 的区别

函数用法区别
merge()用于基于键连接两个DataFrame对象,类似于SQL中的JOIN操作,通常用于合并具有相同或相关键的数据集。
concat()用于沿着指定的轴连接多个DataFrame或Series对象,通常用于将多个数据对象按行或列方向堆叠在一起。

merge() 用法介绍

pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)

参数说明:

  • leftright: 要连接的DataFrame对象。
  • how: 连接方式,可选值有’left’, ‘right’, ‘outer’, ‘inner’,默认为’inner’。
  • on: 连接键,用于连接两个DataFrame的列名。如果两个DataFrame中的列名不同,可以使用left_onright_on来指定左右DataFrame的连接键。
  • left_onright_on: 左右DataFrame连接的列,如果列名不同。
  • left_indexright_index: 如果为True,则使用左/右DataFrame的索引作为连接键。
  • suffixes: 如果列名冲突,添加后缀。
  • indicator: 如果为True,则将一个名为“_merge”的列添加到结果DataFrame,表示每行的合并方式(例如,左侧、右侧或两侧)。
  • validate: 指定数据合并的方式,可选值为"one_to_one"、“one_to_many”、“many_to_one"和"many_to_many”。

示例用法:

merged_df = pd.merge(df1, df2, on='key_column')

这将根据 key_column 列的值将两个DataFrame对象df1df2连接在一起,默认使用内连接(‘inner’)。

concat() 用法介绍

pd.concat(objs, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=True)

主要参数:

  • objs: 要连接的DataFrame或Series对象的列表或字典。
  • axis: 指定连接的轴,0表示按行连接,1表示按列连接。
  • join: 指定连接的方式,可选值有’inner’和’outer’,默认为’outer’。
  • ignore_index: 如果为True,则在连接过程中重置结果的索引。
  • keys: 如果传递了列表或数组,则用作结果对象的层次化索引中的级别名称。
  • verify_integrity: 如果为True,则检查结果对象是否包含重复索引。
  • sort: 如果为True,则按字典顺序对结果对象的索引进行排序。

示例用法:

concatenated_df = pd.concat([df1, df2], axis=0)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值