汇总来自一个DataFrame的信息,然后将其加入另一个DataFrame

时间:2019-04-30 20:24:30

标签: python pandas join aggregate

我有两个Pandas DataFrames:一个是公司之间的交易历史(它们的ID),交易周和交易金额。因此,“出售”列中的每个公司都与来自不同地区的公司进行交易(“购买”列)。

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

我不能仅将“区域”列连接到交易表,因为并非规格表中的所有公司都在“出售”或“购买”列中。规格表中的公司位于“出售” 中的或“购买”列中的

第一个DataFrame(交易): enter image description here

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

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

我认为要通过“出售ID”向groupby过渡,但不知道下一步该怎么做。

请帮助

1 个答案:

答案 0 :(得分: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')

输出

region    21    22
sell
AAA     37.5  15.0