gpt4 book ai didi

python - 为满足条件的第一行中的数据框赋值

转载 作者:行者123 更新时间:2023-12-04 08:45:58 24 4
gpt4 key购买 nike

我有一个 Pandas 数据框,我想添加一列并根据某些条件设置某些值。
初始化
看我下面的例子:

import numpy as np
import pandas as pd

df=pd.DataFrame(np.reshape(np.arange(20),(5,4)).tolist(),columns=list('ABCD'))
df['E']=''
df.loc[0,'E']=1
df
到此为止,一切如愿。输出:
    A   B   C   D  E
0 0 1 2 3 1
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
4 16 17 18 19
问题
但是现在,我想在“B”值大于 8 到 3 的第一行中设置“E”列的值(与 df.loc[2,'E']=1 相同,但使用该条件。我不知道哪一行是先验的)。
解决方案尝试
我尝试过不同的事情:
df.loc[df['B']>8,'E'].iloc[0]=3
df
这不会改变任何值:
    A   B   C   D  E
0 0 1 2 3 1
1 4 5 6 7
2 8 9 10 11
3 12 13 14 15
4 16 17 18 19
同样适用于
df.loc[df['B']>8]['E'].iloc[0]=3
我尝试过的其他事情会导致错误。 df.loc[df['B']>8,'E']=3效果很好,但我只想在满足条件的第一行中分配值,而不是在所有行中。
那么我该如何实现呢?

最佳答案

使用 .idxmax() .自 TrueTrue 的最大值/False它将返回第一个 True 的索引 bool 索引的值。

df.loc[(df['B']>8).idxmax(),'E']=3

关于python - 为满足条件的第一行中的数据框赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64322872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com