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