gpt4 book ai didi

python - 合并数据框和重复值

转载 作者:太空宇宙 更新时间:2023-11-04 04:10:05 25 4
gpt4 key购买 nike

我很难想出一个简单的合并逻辑。

 TimeSeries = A.merge(B, on = ['YEAR','MONTH'], how= 'left')

我有以下数据框。 2001-2018 年连续月/年列(12 个月 X 17 年)

答:

|---------------------|------------------|
| Month | Year |
|---------------------|------------------|
| 12 | 2001 |
|---------------------|------------------|
| 01 | 2002 |
|---------------------|------------------|
| ...... | ..... |
|---------------------|------------------|
| 12 | 2018 |
|---------------------|------------------|

另一个数据框有唯一的ID、月、年和金额

乙:

 |-----------------|----------------|--------------|--------|
| Month | Year | ID | Amount |
|-----------------|----------------|--------------|--------|
| 05 | 2013 | 2 | 500K |
|-----------------|----------------|--------------|--------|
| 01 | 2002 | 1 | 200K |
|-----------------|----------------|--------------|--------|
| 12 | 2016 | 3 | 800K |
|-----------------|----------------|--------------|--------|

我如何能够附加/合并两个数据框,以便数据框 B 中的每个 ID 都具有数据框 A 中的整个时间序列。它应该合并到正确的月份和年份列。

ID 的期望输出。每个 ID 应该有 ~204 行,如果月份和年份相同,则显示正确的金额

 |---------------------|------------------|--------------|-----------|
| Month | Year | ID | Amount |
|---------------------|------------------|--------------|-----------|
| 01 | 2001 | 1 | NaN |
|---------------------|------------------|--------------|-----------|
| 01 | 2002 | 1 | 200K |
|---------------------|------------------|--------------|-----------|
| 12 | 2018 | 1 | NaN |
|---------------------|------------------|--------------|-----------|

最佳答案

您需要 .reindex,这样每行的 ID 都会被填充。不需要 DataFrameA:

import pandas as pd

names = ['Month', 'Year', 'ID']
idx = pd.MultiIndex.from_product([range(1, 13, 1), range(2001, 2019, 1), B.ID.unique()],
names=names)

B = B.set_index(names).reindex(idx).reset_index()

输出:

print(B.head())

# Month Year ID Amount
#0 1 2001 2 NaN
#1 1 2001 1 NaN
#2 1 2001 3 NaN
#3 1 2002 2 NaN
#4 1 2002 1 200K

B.groupby('ID').size()
#ID
#1 216
#2 216
#3 216
#dtype: int64

Performant Cartesian Product如果产品相当慢,有办法优化产品

关于python - 合并数据框和重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56445250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com