我在'Field_Type'列中填充了字符串,我想使用if语句在'Units'列中导出值。
因此,单位显示出所需的结果。本质上,我想指出正在发生的活动类型。
我尝试使用下面的代码来执行此操作,但该代码无法运行(请参见下面的屏幕截图,以获取错误信息)。任何帮助将不胜感激!
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
答案 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'