【问题标题】:Joining Three Data Frames for all Iterations of Car Color, Pets, and Items Purchased in Pandas- groupby?为在 Pandas-groupby 中购买的汽车颜色、宠物和物品的所有迭代加入三个数据框?
【发布时间】:2020-08-06 16:50:58
【问题描述】:

我目前有三个数据框:购买、汽车颜色和宠物。可以使用以下代码形成该数据的示例:

import pandas as pd

cols = ['MEMBER', 'CAR_COLOR', 'PET', 'PURCHASE_TYPE', 'ITEM_1', 'ITEM_2', 'ITEM_3', 'ITEM_4']

data1 = [
     [1, "", "", "CC", "BALL", "SHIRT", "VIOLIN", "SWEATER"],
     [1, "", "", "CC", "CANVAS", "COFFEE", "", ""],
     [1, "", "", "CSH", "TOY", "VIDEO_GAME", "GUITAR", ""],
     [2, "", "", "CC", "VEST", "BOOK", "EGGS", "BREAD"],
     [2, "", "", "CHK", "APPLES", "TOOLS", "", ""]
]

colors = [
    [1,"BLUE"],
    [1, "RED"],
    [2, "BLUE"],
    [2, "GREEN"],
    [2, "WHITE"]
]

pets = [
    [1, 'FISH'],
    [2, 'DOG'],
    [2, 'CAT'],
    [2, 'FISH']
]

df_data = pd.DataFrame(data1, columns=cols)
df_colors = pd.DataFrame(colors, columns=['MEMBER', 'CAR_COLOR'])
df_pets = pd.DataFrame(pets, columns = ['MEMBER', 'PET'])

基本上,我想加入这些数据框,以便
(MEMBER, PURCHASE_TYPE, ITEMS1-4)/CAR_COLOR/PET 被列为它自己的行。最初,购买数据框 (data1) 具有唯一的成对值 (MEMBER, PURCHASE_TYPE),但这些值被缩减,如果一对有四个以上的项目,则项目 4 之后的项目成为他们自己的新行,如行所示数据 1 的 1 和 2。最终的数据框应该与 this image 中的一样。

在我的实际情况中,三个初始 Dataframe 中的每一个都有数千行,因此理想情况下,解决方案应该是健壮的/易于简化为更大的数据集。如果这不是足够的信息或您有任何相关问题,请告诉我。我想解决方案涉及某种分组和合并,但由于某种原因,我的大脑遇到了这个问题。任何帮助都将不胜感激!

【问题讨论】:

  • 请始终尝试发布预期的输出
  • @geekzeus 你的意思是将输出作为数据框文本发布吗?我还没有弄清楚如何在帖子中将 DF 作为文本发布 :( 所以我能做的最好的事情就是发布图片

标签: python pandas join group-by categorical-data


【解决方案1】:

你可以这样做:

cols = ['MEMBER', 'PURCHASE_TYPE', 'ITEM_1', 'ITEM_2', 'ITEM_3', 'ITEM_4']
df_out  = (df_data[cols].set_index('MEMBER').join([di.set_index('MEMBER') for di in [df_colors, df_pets]])
             .sort_values(['MEMBER', 'PET']).reset_index())

输出:

    MEMBER PURCHASE_TYPE  ITEM_1      ITEM_2  ITEM_3   ITEM_4 CAR_COLOR   PET
0        1            CC    BALL       SHIRT  VIOLIN  SWEATER      BLUE  FISH
1        1            CC    BALL       SHIRT  VIOLIN  SWEATER       RED  FISH
2        1            CC  CANVAS      COFFEE                       BLUE  FISH
3        1            CC  CANVAS      COFFEE                        RED  FISH
4        1           CSH     TOY  VIDEO_GAME  GUITAR               BLUE  FISH
5        1           CSH     TOY  VIDEO_GAME  GUITAR                RED  FISH
6        2            CC    VEST        BOOK    EGGS    BREAD      BLUE   CAT
7        2            CC    VEST        BOOK    EGGS    BREAD     GREEN   CAT
8        2            CC    VEST        BOOK    EGGS    BREAD     WHITE   CAT
9        2           CHK  APPLES       TOOLS                       BLUE   CAT
10       2           CHK  APPLES       TOOLS                      GREEN   CAT
11       2           CHK  APPLES       TOOLS                      WHITE   CAT
12       2            CC    VEST        BOOK    EGGS    BREAD      BLUE   DOG
13       2            CC    VEST        BOOK    EGGS    BREAD     GREEN   DOG
14       2            CC    VEST        BOOK    EGGS    BREAD     WHITE   DOG
15       2           CHK  APPLES       TOOLS                       BLUE   DOG
16       2           CHK  APPLES       TOOLS                      GREEN   DOG
17       2           CHK  APPLES       TOOLS                      WHITE   DOG
18       2            CC    VEST        BOOK    EGGS    BREAD      BLUE  FISH
19       2            CC    VEST        BOOK    EGGS    BREAD     GREEN  FISH
20       2            CC    VEST        BOOK    EGGS    BREAD     WHITE  FISH
21       2           CHK  APPLES       TOOLS                       BLUE  FISH
22       2           CHK  APPLES       TOOLS                      GREEN  FISH
23       2           CHK  APPLES       TOOLS                      WHITE  FISH

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-01
    • 2015-10-24
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多