python - Pandas:根据另一列中的标志连接列中的字符串,直到标志更改

标签 python pandas

我正在尝试根据另一列中的值连接列中的字符串。虽然这本质上并不困难,但这里标志的顺序很重要,所以我想不出一个Pythonic方法来完成这个任务(目前正在尝试多个计数器/循环)。

示例表:

text    flag
a       0
b       0
c       1
d       0
e       1
f       1
g       1

示例输出:

text    flag
ab      0
c       1
d       0
efg     1

我想''.join连续标志的每个字符串,直到击中下一个标志。唯一的标志是 1 和 0。有什么想法吗?

以下是生成示例数据的快速方法,因此您不必自己动手:

import pandas as pd
df = pd.DataFrame({'text':['a','b','c','d','e','f','g'], 'flag':[0,0,1,0,1,1,1]})

最佳答案

我会这样做:

In [6]: (df.groupby(df.flag.diff().ne(0).cumsum(), as_index=False)
           .agg({'text':'sum','flag':'first'}))
Out[6]:
  text  flag
0   ab     0
1    c     1
2    d     0
3  efg     1

关于python - Pandas:根据另一列中的标志连接列中的字符串,直到标志更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50914362/

相关文章:

python - 如何计算运行总计并在使用 Python 更改值时重置?

python - 如何在 Pandas DataFrame 中为我的预测结果添加一列,然后另存为 CSV?

python - 在 python 中,我如何检查一个对象是否有值?

python - 最大化组内相关性,同时最小化组间相关性

python - 线还是字符串?

python-2.7 - 使用 pandas df.plot 在子图上绘制多条线

python - Seaborn 线图高 CPU;与 matplotlib 相比非常慢

python - python忽略if语句

python sqlite auto increment 仍然要求插入时的 id 字段

python - 从提取的 JSON 时间索引中获取分钟,与当前时间进行比较。