我下面有数据框
A B
1 a0
2 b0
3 b1
4 a1
5 b2
6 a2
首先,我想剪切df
.with startswith(“ a”)
df1
A B
1 a0
2 b0
3 b1
df2
A B
4 a1
5 b2
df3
A B
6 a2
我想统计一下行数。并总结结果。
我想要的结果如下
rows
a0 3
a1 2
a2 1
如何做到这一点?
您可以将不是以开头的单元格转换a
为缺少的值,并向前填充序列,然后执行以下操作value_counts
:
df.B.where(df.B.str.startswith("a"), None).ffill().value_counts()
#a0 3
#a1 2
#a2 1
#Name: B, dtype: int64
如果a
出现重复的s,以区分它们,则可以使用以下命令创建一个附加的组变量cumsum
:
start_a = df.B.str.startswith("a")
df.groupby(by = [df.B.where(start_a, None).ffill(), start_a.cumsum().rename('g')]).size()
#B g # here is an extra group variable to differentiate possible duplicated a rows
#a0 1 3
#a1 2 2
#a2 3 1
#dtype: int64
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句