Python 如何在pandas中创建一个新列,并基于现有列的条件值向该新列添加值?

Python 如何在pandas中创建一个新列,并基于现有列的条件值向该新列添加值?,python,pandas,dataframe,Python,Pandas,Dataframe,因此,我得到了一个包含大量编码的数据帧。我想创建一个新列,其中我想根据数据集第一列的数字添加字符串值。例如,如果数据集中的第一列有数字0、1、2、3和4,那么我想在新列的相同行中添加字符串“Thor” 任何帮助都将不胜感激。多谢各位 到目前为止,我已经尝试: def name_values(data): if(data['facefeat_1']==-0.141472) | (data['facefeat_1']== -0.141472) | (data['facefeat_1']==

因此,我得到了一个包含大量编码的数据帧。我想创建一个新列,其中我想根据数据集第一列的数字添加字符串值。例如,如果数据集中的第一列有数字0、1、2、3和4,那么我想在新列的相同行中添加字符串“Thor”

任何帮助都将不胜感激。多谢各位

到目前为止,我已经尝试:

def name_values(data):
    if(data['facefeat_1']==-0.141472) | (data['facefeat_1']== -0.141472) | (data['facefeat_1']== -0.221594) | (data['facefeat_1']== -0.181907) | (data['facefeat_1']== -0.184878):
        data['Name'] = 'Thor'

facefeat_1是dataframe中第一列的名称,“name”是我要填充的新列

所需输出应为

名称 雷神 洛基

我得到的: 没有一个 没有

截图:


假设您有一个数据帧(df),它有一个列facefeat_1,并且基于特定行的facefeat_1列的值,您希望df.name值是一个字符串。 可以按以下方式添加应用函数

def get_names(row):
    if row['facefeat_1'] in [-0.141472,-0.141472, -0.141472, -0.221594,-0.181907,-0.184878]:
        return "Thor"
    elif row['facefeat_1'] in some_list:
        return "Loki"
    else:
        return "Odin"
df['name'] = None
df['name'] = df.apply(get_names, axis = 1)

然后您可以按照以下方式设置df['name']

def get_names(row):
    if row['facefeat_1'] in [-0.141472,-0.141472, -0.141472, -0.221594,-0.181907,-0.184878]:
        return "Thor"
    elif row['facefeat_1'] in some_list:
        return "Loki"
    else:
        return "Odin"
df['name'] = None
df['name'] = df.apply(get_names, axis = 1)


如果您遇到任何问题/错误,请发送屏幕截图。

请添加输入和预期输出的示例。提供您尝试的代码示例。快去看看。我已经试过了,但出于某种原因,它没有在新创建的列中添加字符串。知道它可能是什么吗?你能显示所需的输出和电流输出吗?附上一个截图。不知道如何把截图,以便有意义,但我已经修改了问题。基本上,我想在新的冒号中填入像Thor和Loki这样的名字,但实际上,即使在实现了上述代码之后,我在新冒号中也没有名字。名字列在[-0.141472,-0.141472,-0.221594,-0.181907,-0.184878]中没有facefeat_1的值吗?我假设您使用的是jupyter笔记本,使用display(df)打印数据帧,并拍摄屏幕截图,以便数据帧可见。我已经添加了它。因为数据框很大,所以它不会显示其中的所有值。这就是为什么我说“不确定如何放置屏幕截图以使其有意义”,但是对于您的问题,不,facefeat_1列中没有空值