根据其他列值熊猫将值分配给新列

用户名

这个问题之前似乎已经重复并回答过,但这有点棘手。

可以说我有以下数据框。

Id     Col_1
1     aaa 
1     ccc 
2     bbb 
3     aa  

基于值列Id和Col_1,我要创建新列并通过检查aaCol_1中是否存在来分配新值Id如果它们具有相同的ID,则应根据均值应用此值

预期结果:

Id   Col_1  New_Column
1     aaa    aa
1     ccc    aa
2     bbb    
3     aa    aa

我尝试了这个:

df['New_Column'] = ((df['Id']==1) | df['Col_1'].str.contains('aa')).map({True:'aa', False:''})

结果是

Id   Col_1  New_Column
1     aaa    aa
1     ccc    
2     bbb    
3     aa    aa

但是正如我上面提到的,我也想aa在新列上分配相同的ID。

有人可以帮忙吗?

耶斯列尔

使用GroupBy.transformGroupBy.any用于GET面膜至少一个所有组aaa

mask = df['Col_1'].str.contains('aa').groupby(df['Id']).transform('any')

通过以下方法替代Series.isin和过滤Idaa

mask = df['Id'].isin(df.loc[df['Col_1'].str.contains('aa'), 'Id'])

df['New_Column'] = np.where(mask, 'aa','')
print (df)
   Id Col_1 New_Column
0   1   aaa         aa
1   1   ccc         aa
2   2   bbb           
3   3    aa         aa

编辑:

mask1 = df['Id'].isin(df.loc[df['Col_1'].str.contains('aa'), 'Id'])
mask2 = df['Id'].isin(df.loc[df['Col_1'].str.contains('bb'), 'Id'])

df['New_Column'] = np.select([mask1, mask2], ['aa','bb'],'')
print (df)
   Id Col_1 New_Column
0   1   aaa         aa
1   1   ccc         aa
2   2   bbb         bb
3   3    aa         aa

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据Pandas中其他列的值将值分配给新列

根据名称和其他列值将NA分配给列

根据两个熊猫数据框之间的条件将值分配给新列

Python:使用其他列将值分配给Pandas中的新列作为列表

将数据框的新列分配给与其他数据框匹配的值

SQL查询根据不同的情况将值分配给其他行中具有空值的列

基于某些其他列值将条件值分配给多个列

将值分配给列名称是其他列值的串联的列

R:根据满足条件的另一列的值将值分配给新列

根据多个条件将现有列的值分配给 Pandas 中的新列

熊猫-根据多个条件将值分配给空列

熊猫按日期分组,将值分配给列

根据列中的条件将值分配给组

r 根据值将字符分配给列

根据条件将布尔值分配给新列

使用R,如何根据范围内的数字将值分配给新列?

根据逻辑表达式将值分配给R数据框中的新列

如何根据另一列的每组最大值将一列的标签分配给新列?熊猫变形

根据由第三列分组的第二列中的值将值分配给新列?

熊猫,如何避免使用iterrow(如何根据另一个数据框的值将值分配给数据框的新列)

在熊猫数据框中,如何根据列值过滤行,进行计算并将结果分配给新列?

如何基于R数据帧或数据表中其他列中的值将值分配给列

Python根据另一列的值(通过数字索引确定)将值分配给新列

根据其他列值在熊猫中添加新列

熊猫根据其他列的值创建新的列ID

熊猫-如果匹配条件和其他列中定义的时间范围,则将值分配给行

将唯一的组ID分配给具有相同列值且其他值分开的行集

如何将pandas列分配给其他列,如果是nan则默认值?

如何使用R将宽数据中的一列中的值分配给其他列