Python pandas 如何通过内部编号获取某些值?

标签 python pandas csv

我有一个如下所示的数据框:

    Answers  all_answers  Score
0       0.0            0     72
1       0.0            0     73
2       0.0            0     74
3       1.0            1      1
4      -1.0            1      2
5       1.0            1      3
6      -1.0            1      4
7       1.0            1      5
8       0.0            0      1
9       0.0            0      2
10     -1.0            1      1
11      0.0            0      1
12      0.0            0      2
13      1.0            1      1
14      0.0            0      1
15      0.0            0      2
16      1.0            1      1

第一列是计算流程中符号发生变化的信号

第二个是我刚刚从第一个中删除了减号

第三个是第二列的内部帐户 - 多少为 1,多少为 0

我想向其中添加第四列,它只会向我显示那些在观察第一列的符号时连续出现例如 5 次的单位。

要得到这样的东西

    Answers  all_answers  Score  New
0       0.0            0     72    0
1       0.0            0     73    0
2       0.0            0     74    0
3       1.0            1      1    1
4      -1.0            1      2   -1
5       1.0            1      3    1
6      -1.0            1      4   -1
7       1.0            1      5    1
8       0.0            0      1    0
9       0.0            0      2    0
10     -1.0            1      1    0
11      0.0            0      1    0
12      0.0            0      2    0
13      1.0            1      1    0
14      0.0            0      1    0
15      0.0            0      2    0
16      1.0            1      1    0
17      0.0            0      1    0

Pandas 可以做到这一点吗?

最佳答案

您可以使用:

# group by consecutive 0/1
g = df['all_answers'].ne(df['all_answers'].shift()).cumsum()

# get size of each group and compare to threshold
m = df.groupby(g)['all_answers'].transform('size').ge(5)

# mask small groups
df['New'] = df['Answers'].where(m, 0)

输出:

    Answers  all_answers  Score  New
0       0.0            0     72  0.0
1       0.0            0     73  0.0
2       0.0            0     74  0.0
3       1.0            1      1  1.0
4      -1.0            1      2 -1.0
5       1.0            1      3  1.0
6      -1.0            1      4 -1.0
7       1.0            1      5  1.0
8       0.0            0      1  0.0
9       0.0            0      2  0.0
10     -1.0            1      1  0.0
11      0.0            0      1  0.0
12      0.0            0      2  0.0
13      1.0            1      1  0.0
14      0.0            0      1  0.0
15      0.0            0      2  0.0
16      1.0            1      1  0.0

关于Python pandas 如何通过内部编号获取某些值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73706315/

相关文章:

python - 使用 boost-asio 的 C++ 和 Python 程序之间的客户端服务器

python-3.x - 指定数据框的属性定义(例如列)位于哪个文件中?

python - 将 DataFrame 的整数索引和生成的 SciPy 矩阵视为同一件事是个坏主意吗?

C#,在 2 之后拆分;在同一行

python - Pandas 猜测分隔符 sep=None

python - 从登录我的 GAE 应用程序的用户发送电子邮件

Python Openpyxl,复制和粘贴单元格范围

python - 基于变量值的自定义绘图标记

python - 如何向现有 DataFrame 添加新列?

python - Pandas 在读取制表符分隔的数据时似乎忽略了第一列名称,给出了 KeyError