需要在保持熊猫或/和python中的顺序的同时对字母序列进行分组

Posted

技术标签:

【中文标题】需要在保持熊猫或/和python中的顺序的同时对字母序列进行分组【英文标题】:Need to group sequence of letters while keeping the order in pandas or/and python 【发布时间】:2018-05-24 02:30:49 【问题描述】:

我有一个数据框:

row1 col1 col2

1    U    1
2    U    1
3    U    1
4    D    1
5    D    1
6    U    1
7    U    1

When I did groupby sum I got :

    col1  col2
1     U     5
2     D     2

But what I want is :

      col1  col2

1       U     3
2       D     2
3       U     2

有人回答了类似的问题。但是使用oracle sql。我只有 pandas 和 python 可用。

Group rows Keeping the Order of values done with sql

我怎样才能获得输出。

【问题讨论】:

不是图片,你把同样的贴在这里怎么样?? 欢迎来到 SO。在您在这里写更多内容之前,请仔细阅读:***.com/help/asking @Super Programmer,没有图片在熊猫中不起作用,人们倾向于复制您的数据并研究解决方案,因为您是会员,因为今天我更新了问题。下次添加文字,我们不要图片。 【参考方案1】:

通过检查第一行是否不等于第二行来进行分组。即

df = pd.DataFrame('col1':['U','U','D','U','U'],'col2':[3,1,2,1,1])
mask = df['col1'].ne(df['col1'].shift()).cumsum()
ndf = df.groupby(mask).agg('col1':'first','col2':'sum')

     col1  col2
col1           
1       U     4
2       D     2
3       U     2

【讨论】:

以上是关于需要在保持熊猫或/和python中的顺序的同时对字母序列进行分组的主要内容,如果未能解决你的问题,请参考以下文章

python删除列表中的重复元素并保持相对顺序不变

拆垛一个多指标熊猫数据帧,同时保持相同的列

Python实用技法第6篇:让字典保持有序

有条件地格式化 Python 熊猫单元格

在保持原始行顺序的同时合并两个数据框

Python Pandas Regex