首页 > 解决方案 > 聚合来自一个 DataFrame 的信息并将其加入另一个 DataFrame

问题描述

我有两个熊猫数据框:一个是公司之间的交易历史(他们的 ID)、交易周和交易总和。因此,“卖出”列中的每家公司都与来自不同地区的公司进行交易(“买入”列)。

另一个是规格表,包含公司 ID 和地区。我需要为 ML 模型生成特征 - 意味着从每家公司到每个地区的付款并将其加入规范数据框。

我不能只将“地区”列加入交易表,因为并非规格表中的所有公司都在“卖出”或“买入”列中。规格表中的公司要么在“卖出” ,要么在“买入”列。

第一个数据帧(交易): 在此处输入图像描述

第二个数据框(规范): 在此处输入图像描述

我需要这样的DataFrame: 在此处输入图像描述

我想通过'sell Id'转向groupby,但不知道下一步该做什么。

请帮忙

标签: pythonpandasjoinaggregate

解决方案


这可能是您正在寻找的。

# Generate sample data
df = pd.DataFrame([['AAA','CCC',25,14],['AAA','CCC',50,18],['AAA','DDD',10,20],['AAA','DDD',20,25]])
    df.columns = ['sell','buy','sum','week']

#Generate second table
spec = pd.DataFrame([['CCC',21],['DDD',22]])
spec.columns = ['companyID','region']

# Merge the two dataframes
df = df.merge(spec, left_on='buy',right_on='companyID')

# Group by whatever columns you need, and take the mean
df = df.groupby(['sell','region'])['sum'].mean().reset_index()

# Pivot your data
df.pivot(index='sell', columns='region', values='sum')

输出

region    21    22
sell
AAA     37.5  15.0

推荐阅读