如何在没有NaN的情况下合并groupby结果?

时间:2019-08-05 12:52:01

标签: python pandas dataframe

我有以下数据框:

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

2 个答案:

答案 0 :(得分:6)

使用stack + value_counts而不是两个groupbys

df.stack().value_counts()

10    2
15    2
20    1
14    1
dtype: int64

如果您有不止这些列,请先索引

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

答案 1 :(得分:0)

尝试一下:

data = [['10', '20'], ['10', '15'], ['15', '14']] 

df1 = pd.DataFrame(data, columns = ['dt', 'ct'])
df2= df1.groupby('ct')['ct'].count()
df3= df1.groupby('dt')['dt'].count()
print df2.append(df3)