根据ID的列值创建一个新列

Pythonista

请帮我解决这个问题。我在网上搜索,但找不到解决方案。

df

Id    Fruit
1     Apple
1     Carrot
2     Apple
3     Carrot

list = [fruit, vegetable, both]

问题是,如果ID的水果列包含苹果或胡萝卜,该如何分配每个ID。如果id包含苹果,则为ID 1分配水果,如果仅是胡萝卜,则分配蔬菜,如果两者都都分配。

我试图按行使用str.contains,但是它没有ID列。

结果

Newdf

Id    Fruit    New_col
1     Apple    Both
1     Carrot   Both
2     Apple    Fruit
3     Carrot   Vegetable 

十分感谢。

BEN_YO

这样做map第一,然后我们只用transform nunqiue找到的位置应该是“既”

s=df.Fruit.map({'Apple':'Fruit','Carrot':'Vegetable'})
mask=s.groupby(df.Id).transform('nunique').eq(2)
s[mask]='both'
df['New']=s
df
Out[190]: 
   Id   Fruit        New
0   1   Apple       both
1   1  Carrot       both
2   2   Apple      Fruit
3   3  Carrot  Vegetable

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据条件创建一个新的“ID”列

根据R中的列值创建一个id

如何创建一个列并根据单独的列值用新值填充它

根据两个现有列的对应值创建一个新列

根据仅为新ID累加的另一列创建一个累加列

根据MYSQL表中一列的值创建一个新列

Pandas 根据另一列的非空值创建一个新列

熊猫根据现有列的第一个唯一值创建新列

创建一个新列,该列使用SQL根据ID显示最后查询日期

根据其他列创建一个新列

根据不同的列创建一个新列

根据其他列的值创建一个新列

Python Pandas根据另一个列值创建新列

根据其他列的值创建一个新列

数据框 - 根据给定列的前一个和当前行值创建新列

根据其他列创建一个具有值的新列 - 在 R 中

根据其他列R中的不同值创建一个新列R

根据多列中的值和相同条件在pandas中创建一个新列

KDB/Q:根据其他列的值创建一个新列

根据数据表中的多列创建一个新的累积值列

Python groupby - 根据其他列中的值创建一个新列

根据现有列中的值创建一个新列

根据另一列和另一个表中的值创建一个新列

根据上一行的值创建一个新列并删除当前行

根据另一个数据框列的唯一值创建一个新的数据框

根据现有单元格下的值创建一个新列

根据与另一个数据框中的值匹配的行数创建新列

根据对 R 中的特定列求和创建一个新值

根据过滤后的值为数据表创建一个新列