gpt4 book ai didi

Python Pandas 连接或整形数据以添加两个具有重复值的新列

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

好的。我不知道如何真正问这个问题,但这里是。我有一个这样的数据框。

import pandas as pd

d = {'Product' : ['Product_A','Product_A', 'Product_B', 'Product_B'],'Country' : ["DE", "DE", "DE","DE"],'Billed_Week' : ['201652', '201701', '201652', '201701'],'Billings' : [1116, 9030, 7476, 2859]}
df = pd.DataFrame(d)

sequence = ['Product','Country','Billed_Week','Billings']
df = df.reindex(columns=sequence)

输出:

    Product   Country  Billed_Week  Billings
0 Product_A DE 201652 1116
1 Product_A DE 201701 9030
2 Product_B DE 201652 7476
3 Product_B DE 201701 2859

我需要再添加两列“Billed_Week_New”和“Billings_New”,它们根据整个第一个数据帧的分组以重复格式添加值。因此,对于第一个数据框的第一条记录,我需要按整个分组中的周数进行扩展。我将只显示所需的输出。

需要的输出:

Product    Country  Billed_Week  Billings   Billed_Week_New   Billings_New
Product_A DE 201652 1116 201652 1116
Product_A DE 201652 1116 201701 9030
Product_A DE 201701 9030 201652 1116
Product_A DE 201701 9030 201701 9030
Product_B DE 201652 7476 201652 7476
Product_B DE 201652 7476 201701 2859
Product_B DE 201701 2859 201652 7476
Product_B DE 201701 2859 201701 2859

最佳答案

考虑交叉连接,在列之间返回笛卡尔积(这里相同键上的集合之间的所有可能组合是ProductCountry):

mdf = df.merge(df, on=['Product','Country']).\
rename(columns = {'Billed_Week_x': 'Billed_Week',
'Billings_x': 'Billings',
'Billed_Week_x':'Billed_Week_New',
'Billings_y':'Billings_New'})
print(mdf)

# Product Country Billed_Week Billings Billed_Week_New Billings_New
# 0 Product_A DE 201652 1116 201652 1116
# 1 Product_A DE 201652 1116 201701 9030
# 2 Product_A DE 201701 9030 201652 1116
# 3 Product_A DE 201701 9030 201701 9030
# 4 Product_B DE 201652 7476 201652 7476
# 5 Product_B DE 201652 7476 201701 2859
# 6 Product_B DE 201701 2859 201652 7476
# 7 Product_B DE 201701 2859 201701 2859

关于Python Pandas 连接或整形数据以添加两个具有重复值的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43106534/

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