题目:寻找超过100元的订单
你被给定了两个数据:transactions
和 products
。
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_id | product_id | amount | total_value |
---|---|---|---|
2 | 102 | 5 | 105.00 |
3 | 103 | 8 | 120.00 |
5 | 105 | 2 | 104.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)
参数说明:
left
和right
: 要连接的DataFrame对象。how
: 连接方式,可选值有’left’, ‘right’, ‘outer’, ‘inner’,默认为’inner’。on
: 连接键,用于连接两个DataFrame的列名。如果两个DataFrame中的列名不同,可以使用left_on
和right_on
来指定左右DataFrame的连接键。left_on
和right_on
: 左右DataFrame连接的列,如果列名不同。left_index
和right_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对象df1
和df2
连接在一起,默认使用内连接(‘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)