python - 如何根据数据框中的条件更改行的值?

标签 python pandas dataframe

我有如下所示的数据框,

    type  label
0      0      0
1      0      0
2      0      0
3      0      0
4      2      1
5      2      1
6      2      1
7      2      1
8      2      1
9      2      1
10     0      0
11     0      0
12     0      0
13     0      0
14     0      0
15     0      0
16     0      0
17     0      0
18     0      0
19     0      0 

(需要一些魔法才能完成)

应在类型列中进行更改,这样,如果 label0type0 那么下一行 type 应分配为 2

完整的数据框应如下所示:

    type  label
0      0      0
1      2      0
2      2      0
3      0      0
4      2      1
5      2      1
6      2      1
7      2      1
8      2      1
9      2      1
10     0      0
11     2      0
12     2      0
13     2      0
14     2      0
15     2      0
16     2      0
17     2      0
18     2      0
19     2      0 

最佳答案

使用.eq()屏蔽具有 typelabel 列值为 0 和 .shift() 的行使用可选的时间频率将索引移动所需的周期数。

例如

m = df['type'].eq(0) & df['label'].eq(0)
df.loc[m == m.shift(1),'type'] = 2
print(df)

O/P:

    type  label
0      0      0
1      2      0
2      2      0
3      2      0
4      2      1
5      2      1
6      2      1
7      2      1
8      2      1
9      2      1
10     0      0
11     2      0
12     2      0
13     2      0
14     2      0
15     2      0
16     2      0
17     2      0
18     2      0
19     2      0

关于python - 如何根据数据框中的条件更改行的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58060206/

相关文章:

python - 如何制作一个由另一个发电机组成的发电机

python - 替换 Pandas Dataframe 中的值

R如何将数据框转换为单行

python - *有效地*使用 RPy(或其他方式)将数据帧从 Pandas 移动到 R

python - 在静态网站中本地检查死链接(使用 wget?)

通过 Safari 和 Firefox 访问时的 Python SSL 服务器 SSLSocket SSLError

python - fatal error : Python. h:没有那个文件或目录

python - 如何从多个 .csv 文件中的命名列中选择唯一值?

python - Pandas EWMA 未按预期工作

python - 为什么使用 read_csv() 创建的 DataFrame 与使用相同数据的 DataFrame() 创建的另一个 DataFrame 不同?