簡體   English   中英

如何基於另一個 dataframe 中的組在 pandas dataframe 中創建指標列?

[英]How to create indicator columns in a pandas dataframe based on groups in another dataframe?

我有一個 dataframe df的形式:

    Object   Class1    Class2    Class3    Class4    Class5     .... Other random columns
    Apple       1        0          1         1         1
    Orange      0        1          0         0         0
    Grape       0        0          0         0         0
    Banana      1        1          0         0         0
    Guava       1        0          0         0         0

我還有另一個 dataframe df2為上面的 class 列提供分組

   Class    Group
   Class1   Group1
   Class2   Group2
   Class3   Group2
   Class4   Group1
   Class5   Group3

我想要做的是從 df2 中獲取分組並在 df 中創建指標列。 更清楚的是,我想要:

    Object   Class1    Class2    Class3    Class4    Class5    Group1    Group2    Group3     .... Other random columns
    Apple       1        0          1         1         1        1         1         1 
    Orange      0        1          0         0         0        0         1         1
    Grape       0        0          0         0         0        0         0         0
    Banana      1        1          0         0         0        1         1         0
    Guava       1        0          0         0         0        1         0         0

創建這個的好方法是什么? 如果我能得到一個易於理解且不一定太 Python 的解決方案,我將不勝感激,因為我正在嘗試更多地了解 pandas 的工作原理。

在熊貓中,我們可以在進行groupby時傳遞mapping ,這里df2是您的mapping

df=df.join(df.reindex(df2.Class,axis=1).\
        groupby(df2.set_index('Class').Group.to_dict(), axis=1).max())
df
Out[204]: 
   Object  Class1  Class2  Class3  Class4  Class5  Group1  Group2  Group3
0   Apple       1       0       1       1       1       1       1       1
1  Orange       0       1       0       0       0       0       1       0
2   Grape       0       0       0       0       0       0       0       0
3  Banana       1       1       0       0       0       1       1       0
4   Guava       1       0       0       0       0       1       0       0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM