从一个DataFrame汇总信息并将其加入另一个DataFrame

问题描述 投票:0回答:1

我有两个pandas DataFrame:一个是公司之间的交易历史(他们的ID),交易周和交易总和。因此,“销售”栏中的每家公司都会向来自不同地区的公司(“购买”栏)进行交易。

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

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

First DataFrame(交易):enter image description here

第二个DataFrame(规范):enter image description here

我需要这样的DataFrame:enter image description here

我认为通过'sell Id'走向groupby但是没有想法接下来要做什么。

请帮忙

python pandas join aggregate
1个回答
2
投票

这可能就是你要找的东西。

# 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')

Output

region    21    22
sell
AAA     37.5  15.0
© www.soinside.com 2019 - 2024. All rights reserved.