条件If语句:如果行中的值以字符串中的字母开头…设置另一列具有相应的值

时间:2019-08-28 18:12:02

标签: pandas numpy dataframe

我在'Field_Type'列中填充了字符串,我想使用if语句在'Units'列中导出值。

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

我尝试使用下面的代码来执行此操作,但该代码无法运行(请参见下面的屏幕截图,以获取错误信息)。任何帮助将不胜感激!

Please have a look at the table

create_table['Units'] = pd.np.where(create_table['Field_Name'].str.startswith("W"), "MW",
pd.np.where(create_table['Field_Name'].str.contains("R"), "MVar",
pd.np.where(create_table['Field_Name'].str.contains("V"), "Per Unit")))```

ValueError: either both or neither of x and y should be given



2 个答案:

答案 0 :(得分:1)

您可以编写一个函数来定义条件,然后在数据框上使用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)

答案 1 :(得分:0)

在您的文字中,您谈论的是Field_Type,但您在示例中使用的是Field_Name。哪个好?

您想要执行以下操作:

create_table[create_table['Field_Type'].str.startwith('W'), 'Units'] = 'MW'
create_table[create_table['Field_Type'].str.startwith('R'), 'Units'] = 'MVar'
create_table[create_table['Field_Type'].str.startwith('V'), 'Units'] = 'Per Unit'