[英]unstack 2 columns one with column names and the other with values into multiple columns-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.