如果基于某些其他列不满足条件,则使用值列表填充 Dataframe 列

最大UU

我有一个看起来像这样的数据框 -

col_1   |   col_2
-------------------
"red"   |    21
-------------------
"blue"  |    31
-------------------
"red"   |    12
-------------------
"blue"  |    99
-------------------
"blue"  |    102

我也有一个像这样的值列表 label = [1,3,2]

我想构建第三列col_3如果颜色是“红色”,应该有“,否则在相应的行上应该有 1,3,2。基本上,如果颜色为“蓝色,则标签中的值应该一个接一个col_1

预期输出-

col_1   |   col_2    | col_3
---------------------------
"red"   |    21      |  "Yes"
-----------------------------
"blue"  |    31      |  "1"
------------------------------
"red"   |    12      | "Yes"
------------------------------
"blue"  |    99      |  "3"
------------------------------
"blue"  |    102     |  "2"

我的方法-

我试过np.where()像这样估算使用

np.where(df["col_1"]=="red","Yes",labels)

,但是

ValueError: operands could not be broadcast together with shapes

我相信这是由于dflabels(5 vs 3)的大小不同

任何人都可以帮助我吗?

谢谢

编辑

  1. 添加了预期输出
  2. 在我的方法演示中犯了一些错误,更正了。
Ch3ster

您可以尝试使用布尔掩码。首先,抢先分配Yes给整个列,然后使用Series.ne. 在您的情况下,创建一个col_1值不等于的Red掩码并使用该掩码填充值。

df['col_3'] = 'Yes'
m = df['col_1'].ne('Red') # ne -> not equal to
df.loc[m, 'col_3'] = label

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果其他两个列不满足过滤条件,则从该列取回值

根据其他列中的值替换一个值,如果不满足条件则保留原样

Pyspark Dataframe:如果不满足依赖于下一列的条件,则按行过滤

如果使用 Excel VBA 不满足条件,则编辑特定列中单元格的值

如果单独的列不满足特定条件,则选择一列的值

如何基于一个列值和其他条件更改DataFrame列值

如果满足条件,则使用其他列值

如果不满足特定条件,则替换 data.table 列中的单个值

如何更改满足给定条件的列值,同时保持该列的不满足条件的值

Excel公式求和,如果其他列满足某些条件

如果行(或列)中的所有值都不满足给定条件,则删除对称数组中的行和列

如果不满足另一列中的条件,尝试从pandas列中返回值

基于其他列计算 DataFrame 列

如果满足某些条件,则填充excel列

如果某列中的值不满足另一列中的要求,则删除行

Pandas DataFrame过滤基于其他列的str列

Python:pandas DataFrame基于其他列的新列

如果不满足条件,则比较数据框内容并更改列颜色

基于其他列值的熊猫条件填充

如果值计数低于阈值,则将列值映射为“其他”-分类列-Pandas Dataframe

如何根据Pandas DataFrame中其他列的值仅对某个列的某些元素求和?

使用其他已知列值的Pandas Dataframe fillna()

Pandas DataFrame-根据其他列的值填充列的NaN

展开DataFrame的列,并用自定义值填充其他列的内容

如何用其他列的下n个条目的最小值填充DataFrame列

Pandas Dataframe用其他列的第一个值填充列

如何基于Pandas DataFrame中其他列的值创建新列

通过哈希映射基于其他列设置或替换dataframe列中的值

Python:如果满足条件,则比较 Dataframe 列中的行之间的列表