Pandas 条件If语句:行中的If值以字符串中的字母开头…;用相应的值设置另一列

Pandas 条件If语句:行中的If值以字符串中的字母开头…;用相应的值设置另一列,pandas,numpy,dataframe,Pandas,Numpy,Dataframe,我用字符串填充了“Field_Type”列,并希望使用if语句派生“Units”列中的值 因此,单位表示期望的结果。本质上,我想指出正在发生的活动类型 我尝试使用下面的代码来执行此操作,但它无法运行(请参阅下面的屏幕截图以了解错误)。非常感谢您的帮助 在您的文本中,您谈论的是字段类型,但在您的示例中使用的是字段名称。哪一个好 您希望执行以下操作: create_table[create_table['Field_Type'].str.startwith('W'),'Units']='MW' 创

我用字符串填充了“Field_Type”列,并希望使用if语句派生“Units”列中的值

因此,单位表示期望的结果。本质上,我想指出正在发生的活动类型

我尝试使用下面的代码来执行此操作,但它无法运行(请参阅下面的屏幕截图以了解错误)。非常感谢您的帮助


在您的文本中,您谈论的是
字段类型
,但在您的示例中使用的是
字段名称
。哪一个好

您希望执行以下操作:

create_table[create_table['Field_Type'].str.startwith('W'),'Units']='MW'
创建表格[创建表格['Field\u Type']。str.startwith('R'),'Units']=“MVar”
创建表格[创建表格['Field\u Type']。str.startwith('V'),'Units']=“每单位”

您可以编写一个函数来定义条件,然后在数据帧上使用
apply
并传递函数

def unit_mapper(row):
    if row['Field_Type'].startswith('W'):
        return 'MW'
    elif 'R' in row['Field_Type']:
        return 'MVar'
    elif 'V' in row['Field_Type']:
        return 'Per Unit'
    else:
        return 'N/A'

然后

create_table['Units'] = create_table.apply(unit_mapper, axis=1)
错误:(“str”对象没有属性“str”,发生在索引0处)
create_table['Units'] = create_table.apply(unit_mapper, axis=1)