pandas 使用具有70个唯一值的分类组将第一个False值转换为True

c9x0cxw0  于 2023-01-15  发布在  其他
关注(0)|答案(1)|浏览(94)

我正在尝试将Pandas Dataframe中的列中第一次出现的False转换为True。该列包含True、False和null值。我当前的代码是:
df.loc[df.groupby('categorical_col')[''].idxmin(), 'target_col'] = True
但是,这给我以下错误:
TypeError: reduction operation 'argmin' not allowed for this dtype
在合并分类组时,如何将第一次出现的False转换为True?
编辑样本数据:
| 分类列|目标列|
| - ------|- ------|
| A类|正确|
| A类|正确|
| A类|正确|
| A类|正确|
| A类|错误|
| 乙|正确|
| 乙||
| 乙||
| 乙|正确|
| 乙|错误|

sgtfey8w

sgtfey8w1#

问题是列target_col不是布尔值,而是由字符串填充的:

print (df)
   categorical_col  target_col
0                1       False
1                1       False
2                2        True

print (df.target_col.dtypes)
object

对于按字符串'True'进行的布尔比较:

df['target_col'] = df['target_col'].eq('True')

df.loc[df.groupby('categorical_col')['target_col'].idxmin(), 'target_col'] = True
print (df)
   categorical_col  target_col
0                1        True
1                1       False
2                2        True

相关问题