Skip to main content
 首页 » 编程设计

python之如何在没有 NaN 的情况下组合 groupby 结果

2025年05月04日16cmt

我有以下数据框:

import pandas as pd  
 
data = [['10', '20'], ['10', '15'], ['15', '14']]  
 
df = pd.DataFrame(data, columns = ['dt', 'ct']) 
df.groupby('dt')['dt'].count() 

返回

dt 
10    2 
15    1 

和

df.groupby('ct')['ct'].count() 

返回

ct 
14    1 
15    1 
20    1 

然后当我合并结果时

df.groupby('ct')['ct'].count() + df.groupby('dt')['dt'].count() 

返回

10    NaN 
14    NaN 
15    2.0 
20    NaN 

但我想得到以下内容:

10    2 
14    1 
15    2.0 
20    1 

请您参考如下方法:

使用stack + value_counts代替两个groupbys

df.stack().value_counts() 

10    2 
15    2 
20    1 
14    1 
dtype: int64 

如果你有超过这些列,首先建立索引

df[['dt', 'ct']].stack().value_counts()