当熊猫数据框窗口中的项目相同时如何返回第一个项目?

Posted

技术标签:

【中文标题】当熊猫数据框窗口中的项目相同时如何返回第一个项目?【英文标题】:How to return first item when the items in the pandas dataframe window are the same? 【发布时间】:2021-12-27 21:42:10 【问题描述】:

我是 python 初学者。 我有以下熊猫数据框,只有两列; “时间”和“输入”。

我想遍历“输入”列。假设我们有一个窗口大小 w= 3。(三个连续值)这样对于每个选定的窗口,我们将检查该窗口内的所有项目/元素是否为 1,然后将第一个项目返回为 1,并将剩余值更改为0 的。

index Time  Input
0     11      0
1     22      0
2     33      0
3     44      1
4     55      1
5     66      1
6     77      0
7     88      0
8     99      0
9   1010      0
10  1111      1
11  1212      1
12  1313      1
13  1414      0
14  1515      0

我的预期输出如下

index   Time  Input  What_I_got  What_I_Want
    0     11      0           0            0
    1     22      0           0            0
    2     33      0           0            0
    3     44      1           1            1
    4     55      1           1            0
    5     66      1           1            0
    6     77      1           1            1
    7     88      1           0            0
    8     99      1           0            0
    9   1010      0           0            0
    10  1111      1           1            1
    11  1212      1           0            0
    12  1313      1           0            0
    13  1414      0           0            0
    14  1515      0           0            0

我应该怎么做才能获得所需的输出?我的代码中是否缺少某些内容?

【问题讨论】:

这真的不是滑动窗口。这只是将 111 替换为 100。即检查下面的代码 @Onyambu,谢谢。您的建议很有帮助。 【参考方案1】:

将熊猫导入为 pd 重新导入

 pd.Series(list(re.sub('111', '100', ''.join(df.Input.astype(str))))).astype(int)
Out[23]: 
0     0
1     0
2     0
3     1
4     0
5     0
6     1
7     0
8     0
9     0
10    1
11    0
12    0
13    0
14    0
dtype: int32

【讨论】:

感谢您发布此内容以使更广泛的受众受益,我遇到了类似的问题,您的建议对我有很大帮助@Onyambu

以上是关于当熊猫数据框窗口中的项目相同时如何返回第一个项目?的主要内容,如果未能解决你的问题,请参考以下文章

ValueError:熊猫数据框中的项目数量错误

如何查找在熊猫数据框中出现最多的行项目

Python:我有具有相同列名的熊猫数据框。如何改变其中之一?

如何根据列表中的项目复制熊猫中的行[重复]

从存储为熊猫数据框中的字符串的列表中提取项目

从项目列表中创建特定形状的熊猫数据框