我有一个如下数据框:
data:
items status
0 jet fail
1 car fail
2 car pass
3 bike fail
4 car fail
5 jet fail
6 bike pass
7 jet fail
8 jet fail
9 bike pass
我想对数据进行分组,items
并使用每个值的计数创建一个新的数据框。预期产量:
df:
unique count pass fail
0 jet 4 0 4
1 car 3 1 2
2 bike 3 2 1
现在,一个方法是获得独特的名单items
,并在其上环找到count
,pass
并且fail
然后将这些列表合并到一个数据帧,但我怎么能做到这一点有效?
使用crosstab
withDataFrame.rename_axis
作为新索引名称,然后为0 position
by添加新列DataFrame.insert
,最后将index转换为by by DataFrame.reset_index
:
df = pd.crosstab(df['items'], df['status']).rename_axis(columns=None, index='unique')
df.insert(0, 'count', df.sum(axis=1))
df = df.reset_index()
print (df)
unique count fail pass
0 bike 3 1 2
1 car 3 2 1
2 jet 4 4 0
如果count
应该是最后一列,则可以使用margin
参数并删除最后一行:
df = (pd.crosstab(df['items'], df['status'],
margins=True,
margins_name='count')
.rename_axis(columns=None, index='unique')
.iloc[:-1]
.reset_index())
print (df)
unique fail pass count
0 bike 1 2 3
1 car 2 1 3
2 jet 4 0 4
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句