簡體   English   中英

將多列分組為幾列-Pandas 數據框

[英]Grouping Multiple Columns into a Few Columns-Pandas Dataframes

我有一個具有虛擬變量的 dataframe; 但是,我想將多列(100+)分組為幾列。 我們歡迎所有的建議。 謝謝:例如:

   A_1 | A_2 | A_3| B_1|  B_2|  B_3|  C_1|  C_2|  C_2|
0 |   0|    1|   0|   0|    0|    0|    0|    0|    0|
1 |   0|    0|   0|   0|    0|    1|    0|    1|    0|
2 |   0|    0|   0|   0|    0|    0|    1|    0|    0|
3 |   0|    0|   0|   0|    1|    0|    0|    0|    0|
4 |   1|    0|   0|   0|    0|    0|    0|    0|    0|
5 |   0|    0|   1|   0|    0|    0|    0|    1|    0|
6 |   0|    0|   0|   1|    0|    0|    0|    0|    0|

所需的 Output:

   A|  B|  C|  
0| 1|  0|  0|      
1| 0|  1|  1|       
2| 0|  0|  1|       
3| 0|  1|  0|       
4| 1|  0|  0|       
5| 1|  0|  1|      
6| 0|  1|  0|     

我試過使用這段代碼; 但是,我不斷遇到錯誤消息,提示缺少列名。

categories = {'A':'A','B': 'B','C': 'C'}
    def correct_categories(cols1):
        return [categories[cat] for col1 in cols1 for cat in categories.keys() if col1.startswith(cat)]
        
rslt = df3.groupby(correct_categories(df3.columns),axis=1).sum()
print(rslt)

錯誤消息:KeyError:'A'

嘗試使用.str.split().str.extract提取第一部分,然后在axis=1上進行groupby

# also groupby on
# df.columns.str.extract('^([^_]+)', expand=False)
df.groupby(df.columns.str.split('_').str[0], axis=1).sum()

Output:

   A  B  C
0  1  0  0
1  0  1  1
2  0  0  1
3  0  1  0
4  1  0  0
5  1  0  1
6  0  1  0

我有一個具有虛擬變量的 dataframe; 但是,我想將多列(100+)分組為幾列。 我們歡迎所有的建議。 謝謝:例如:

   A_1 | A_2 | A_3| B_1|  B_2|  B_3|  C_1|  C_2|  C_2|
0 |   0|    1|   0|   0|    0|    0|    0|    0|    0|
1 |   0|    0|   0|   0|    0|    1|    0|    1|    0|
2 |   0|    0|   0|   0|    0|    0|    1|    0|    0|
3 |   0|    0|   0|   0|    1|    0|    0|    0|    0|
4 |   1|    0|   0|   0|    0|    0|    0|    0|    0|
5 |   0|    0|   1|   0|    0|    0|    0|    1|    0|
6 |   0|    0|   0|   1|    0|    0|    0|    0|    0|

所需的 Output:

   A|  B|  C|  
0| 1|  0|  0|      
1| 0|  1|  1|       
2| 0|  0|  1|       
3| 0|  1|  0|       
4| 1|  0|  0|       
5| 1|  0|  1|      
6| 0|  1|  0|     

我試過使用這段代碼; 但是,我不斷遇到錯誤消息,提示缺少列名。

categories = {'A':'A','B': 'B','C': 'C'}
    def correct_categories(cols1):
        return [categories[cat] for col1 in cols1 for cat in categories.keys() if col1.startswith(cat)]
        
rslt = df3.groupby(correct_categories(df3.columns),axis=1).sum()
print(rslt)

錯誤消息:KeyError:'A'

暫無
暫無

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

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