首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据其他列的值创建新列

根据其他列的值创建新列
EN

Stack Overflow用户
提问于 2020-09-02 17:10:56
回答 1查看 87关注 0票数 1

在我的df中,我为下面的每个实体(Grubhub、Toasttab、Tenk)都有一个列,它对每一行的值表示是或否,

我的代码如下:

代码语言:javascript
复制
df['Grubhub'] = df[['On GrubHub or Seamless?']].apply(lambda x: any(x == 'Yes'), axis = 1)

df['ToastTab'] = df[['On ToastTab?']].apply(lambda x: any(x == 'Yes'), axis = 1)

df['Tenk'] = df[['On Tenk?']].apply(lambda x: any(x == 'Yes'), axis = 1)

df['Udemy'] = df[['On Udmey?']].apply(lambda x: any(x == 'Yes'), axis = 1)

df['Postmates'] = df[['On Postmates?']].apply(lambda x: any(x == 'Yes'), axis = 1)

df['Doordash'] = df[['On DoorDash?']].apply(lambda x: any(x == 'Yes'), axis = 1)

df['Google'] = df[['On Goole?']].apply(lambda x: any(x == 'Yes'), axis = 1)

这为每个实体( Grubhub、Toasttab、Tenk )提供了一个新列,并且该列给出了一个假值,是否有一种更有效的方法,可以在一行代码或函数中完成所有这些操作?谢谢你提前帮忙

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-03 19:09:12

您可以创建列映射并在function中应用loop

代码语言:javascript
复制
columns_map = (
    ('Grubhub', 'On GrubHub or Seamless?'),
    ('ToastTab', 'On ToastTab?'),
    ('Tenk', 'On Tenk?'),
    # etc ...
)

for new_col, alias in columns_map:
    df[new_col] = df[alias].apply(lambda x: x == 'Yes')
    # also you can easily remove aliases columns:
    # df = df.drop(columns=[alias])

或者,可以将值设置为原始列,并在需要时重命名(不使用drop()):

代码语言:javascript
复制
for new_col, alias in columns_map:
    df[alias] = df[alias].apply(lambda x: x == 'Yes')

df.rename(
    columns={alias: new_col for new_col, alias in columns_map},
    inplace=True
)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63710436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档