根据条件更改熊猫数据框子组上特定列的值

我有一个类似于以下数据框:

A B  C
1 0 0.0
1 2 0.2
1 3 1.0
2 1 0.2
2 4 0.0
2 6 1.0
3 1 0.4
3 2 1.0
3 0 0.9
3 3 0.0

现在,对于每个子组,其中一个子组将具有一个共享的A值,我想找到具有最小B值的行,然后将该行的C值更改为0.5。在这种情况下,我将获得一个新的数据框:

A B  C
1 0 0.5
1 2 0.2
1 3 1.0
2 1 0.5
2 4 0.0
2 6 1.0
3 1 0.4
3 2 1.0
3 0 0.5
3 3 0.0

作为补充,如果此操作替换C列中的0.0或1.0,那么我希望该行与其旧值重复。在这种情况下,A=1子组违反了此规则(将0.0替换为0.5),因此应产生:

A B  C
1 0 0.0
1 0 0.5
1 2 0.2
1 3 1.0
...

第一个问题是主要问题,第二个问题不是优先考虑的问题,但是当然欢迎任何一个提供帮助。

广晃

尝试:

df.loc[df.groupby('A')['B'].idxmin(), 'C'] = 0.5

输出:

   A  B    C
0  1  0  0.5
1  1  2  0.2
2  1  3  1.0
3  2  1  0.5
4  2  4  0.0
5  2  6  1.0
6  3  1  0.4
7  3  2  1.0
8  3  0  0.5
9  3  3  0.0

对于附录:

# minimum B rows 
min_rows = df.groupby('A')['B'].idxmin()
# minimum B rows with C==0
zeros = df.loc[min_rows].loc[lambda x: x['C']==0].copy()

# change all min rows to 0.5
df.loc[min_rows, 'C'] = 0.5

# concat with 0
df = pd.concat([df, zeros])

输出(注意最后一行):

   A  B    C
0  1  0  0.5
1  1  2  0.2
2  1  3  1.0
3  2  1  0.5
4  2  4  0.0
5  2  6  1.0
6  3  1  0.4
7  3  2  1.0
8  3  0  0.5
9  3  3  0.0
0  1  0  0.0

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

更改熊猫数据框子集的随机样本的列值?

熊猫数据框根据条件更改列中的值

根据熊猫数据框中的特定ID更改列的值

根据条件更改熊猫中的列值

如何根据多种条件更改熊猫数据框列系列中的特定单元格值?

如何根据列条目根据特定条件更改熊猫列数据?

在熊猫数据框中根据条件为组创建列

根据条件更改熊猫数据

如何使用熊猫根据行值条件更改列数据类型

根据特定月份的值过滤熊猫数据框,并以另一列为条件

根据熊猫的条件更改数据框的所有值

熊猫根据条件更改列值的有效方法

熊猫:使用iloc根据条件更改df列值

如何根据某些条件更改熊猫中的列值

Pandas 数据框如何根据特定组和上一行值为列赋值

如何根据每个数据框子集中的几个数值条件从熊猫中删除行?

使用熊猫根据特定列中的条件替换日期值

自动化识别值没有明显差异的熊猫数据框子组的过程

熊猫:根据多个列的值删除或更改特定的行

熊猫数据框 - 根据条件设置列值

根据熊猫数据框中的条件为列分配值

根据条件替换熊猫数据框列中的值

根据某些词典数据,以熊猫为单位更改列值

根据重复项更改熊猫数据框列的值

根据 R 中的条件更改特定列值

根据DataFrame Python中的条件更改特定列的值

如何根据某些条件更改熊猫的值?

熊猫根据条件更改多列上的值

根据条件更改 r 中的值列数据框