样本数据:
type1 = ['bunny','cow','pig','chicken','elephant']
type2 = ['flower','tree','grass']
data_type1 = np.random.choice(a = type1, p = [0.05,0.15,0.25,0.05,0.5], size=1000)
data_type2 = np.random.choice(a = type2, p = [0.25,0.25,0.50], size=1000)
data_value = stats.poisson.rvs(loc = 18, mu = 30, size = 1000)
df = pd.DataFrame({'type1':data_type1,'type2':data_type2,'data':data_value})
grp1 = pd.unique(df.type1.values)
grp1.sort()
grp2 = pd.unique(df.type2.values)
grp2.sort()
m_df = pd.DataFrame(index = grp1,columns=grp2)
给定一个df结构为“df”,我如何用每个类型组合的计数填充“m_df”。我想完成df.groupby(['type1','type2'])['data'].count()
,但我不确定如何将其写入df,使其看起来更漂亮,更有用。
编辑:下面是一个简单的df,它也可以作为一个例子使用,期望的输出是每个类型组合的值的数量--当输入是df.groupby(['type1','type2'])['data'].count()
时显示的确切输出,问题是如何将该输出表示为类似于m_df的 Dataframe 。
df = pd.DataFrame({'type1': ['bunny','cow','pig','chicken','elephant','cow','pig'],
'data': [32,23,45,35,20,28,55],
'type2':['female', 'male','male','male','male','female','female']})
2条答案
按热度按时间j1dl9f461#
IIUC,使用
value_counts
(与groupby_count
相同),然后使用unstack
作为第二个索引级别:您也可以使用
pd.crosstab
或pivot_table
:p8ekf7hl2#
因此,我使用了您提供的输入。
我不知道,你想在这里实现什么,但从我感觉你需要的是。
密码???
输出如下所示
Output