Groupby搜索第一个和最后一个True值

yatu:

我有一个带有重复索引的pd.Series,每个索引包含一组布尔值:

FA155    False
FA155    False
FA155    False
FA155    True
FA155    True
FA155    True
FA155    True
FA155    True
FA155    False

我想以一种有效的方式对每个不同的索引执行的操作是,仅将序列的第一个和最后一个True值保持为True,并将其余值设置为False。在为True的值之间也可以有False值。

因此,对于此样本,结果将是:

FA155    False
FA155    False
FA155    False
FA155    True
FA155    False
FA155    False
FA155    False
FA155    True
FA155    False

任何帮助将不胜感激。

拉斐尔克:

您可以将locidxmax与原版df和反转版一起使用df

这将产生您的第一个和最后一个True的索引只需将不同的索引设置为False之后。

例如:

设定

z = sio("""i    v
FA154    False
FA155    False
FA155    True
FA155    True
FA155    True
FA155    True
FA155    True
FA155    False
FA156    False
FA156    True
FA156    False
FA156    False
FA156    True""")

df = pd.read_table(z, delim_whitespace=True)

    i       v
0   FA154   False
1   FA155   False
2   FA155   True
3   FA155   True
4   FA155   True
5   FA155   True
6   FA155   True
7   FA155   False
8   FA156   False
9   FA156   True
10  FA156   False
11  FA156   False
12  FA156   True

idxmax()

这与获取df和使用相同reset_index然后,获取您的第一个(v1)和最后一个(v2True的索引列表

v1 = df.groupby("i").v.idxmax().values
v2 = df[::-1].groupby("i").v.idxmax().values

并使用您的逻辑:

df.loc[v1, "v"] = True & df.loc[v1, "v"]
df.loc[v2, "v"] = True & df.loc[v2, "v"]
df.loc[~df.index.isin(np.concatenate([v1,v2])), "v"] = False

使用的想法&是不会意外将False设置True

结果:

>>> df.set_index("i")

        v
i   
FA154   False
FA155   False
FA155   True
FA155   False
FA155   False
FA155   False
FA155   True
FA155   False
FA156   False
FA156   True
FA156   False
FA156   False
FA156   True

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

获取groupby中的第一个和最后一个值

在laravel 5和mysql中获取groupby对象的第一个和最后一个值

熊猫将组分为第一个值和最后一个值

基于groupby Python的第一个和最后一个值的条件创建一个新列

熊猫从组中获取列的第一个和最后一个值

如何打印第一个和最后一个值?

删除组中的第一个和最后一个观测值

从数组获取第一个和最后一个值

获取区域包围的第一个和最后一个值的索引

如何使用pymongo获取第一个和最后一个日期值

矢量如何找到第一个和最后一个当前值

PostgreSQL中window函数的第一个和最后一个值

更改PHP行的第一个和最后一个值

删除第一个和最后一个出现列值的行

多个第一个和最后一个非NA值(按组)

数据框获取对应列的第一个和最后一个值

提取json数组/对象的第一个和最后一个值

基于第一个和最后一个值的时差

返回数组中的第一个和最后一个值

NA之前的第一个和最后一个值

使用RLE从组中获取第一个和最后一个值

选择数据集中的第一个,最后一个和单个观测值

Excel公式获取第一个和最后一个非零值

R数据集中的第一个和最后一个观测值

连接列表的最后一个和第一个值

分组系列的第一个和最后一个值

查找数组中的第一个、最后一个和中间值。返回最大的一个

Pandas groupby cumsum 从最后到第一个

如何基于另一个列值获取一个列的第一个和最后一个值