3 回答

TA貢獻2016條經驗 獲得超9個贊
df_input.groupby('col_cate')['target_bool'].value_counts()
col_cate target_bool
A False 2
True 2
B False 2
True 2
然后你可以 reset_index()

TA貢獻1825條經驗 獲得超6個贊
因為函數GroupBy.count
用于計算具有排除缺失值的值,如果存在是必要的,請在 groupby 之后指定列,如果兩列都用于by
參數 in groupby
:
df = (df_input.groupby(by=["col_cate", "target_bool"])['col_cate']
.count()
.reset_index(name='cnt'))
print (df)
col_cate target_bool cnt
0 A False 2
1 A True 2
2 B False 2
3 B True 2
如果要計算所有列,如果指定兩列,則兩者都是可能的(但這里總是相同的輸出):
df1 = (df_input.groupby(["col_cate", "target_bool"])[['col_cate','target_bool']]
.count()
.add_suffix('_count')
.reset_index())
print (df1)
col_cate target_bool col_cate_count target_bool_count
0 A False 2 2
1 A True 2 2
2 B False 2 2
3 B True 2 2
或者如果使用 GroupBy.size方法它的工作方式有點不同 - 它計算所有值,不排除丟失,因此不需要指定列:
df = df_input.groupby(["col_cate", "target_bool"]).size().reset_index(name='cnt')
print (df)
col_cate target_bool cnt
0 A False 2
1 A True 2
2 B False 2
3 B True 2

TA貢獻1856條經驗 獲得超11個贊
也像這樣:
In [54]: df_input.groupby(df_input.columns.tolist()).size().reset_index().\
...: rename(columns={0:'cnt'})
Out[54]:
col_cate target_bool cnt
0 A False 2
1 A True 2
2 B False 2
3 B True 2
添加回答
舉報