我有以下数据框:
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()
