【发布时间】:2018-01-30 17:40:35
【问题描述】:
我有一个包含 11 列的数据框:Status1-Status5、Time1-Time5 和 Time_Min
df = pd.DataFrame([[100,200,150,400,500,'a','b','a','c','a',100], [300,400,200,500,250,'b','b','c','c','c',200]], columns=['TIME_1', 'TIME_2', 'TIME_3', 'TIME_4', 'TIME_5','STATUS_1','STATUS_2','STATUS_3','STATUS_4','STATUS_5','TIME_MIN'])
我想复制我目前在 SAS 中的代码,它执行以下操作
IF TIME_1 = TIME_MIN THEN STATUS = STATUS_1;
ELSE IF TIME_2 = TIME_MIN THEN STATUS = STATUS_2;
ELSE IF TIME_3 = TIME_MIN THEN STATUS = STATUS_3;
ELSE IF TIME_4 = TIME_MIN THEN STATUS = STATUS_4;
ELSE STATUS = STATUS_5;
STATUS 列的预期输出为
['a','c']
我尝试按照这些思路构建一些东西(需要使用 else ifs 进行扩展)
df['STATUS'] = [a if x == y else b for x,y,a,b in df[['TIME_MIN','TIME_1','STATUS_1','STATUS_2']]]
但这只是给出了一个错误。我敢肯定这是一个简单的修复,但我无法完全弄清楚。
【问题讨论】:
-
你试过用
np.where吗? -
这给出了哪个错误?
-
@Nico Albera - ValueError: 要解压的值太多
-
欢迎来到 StackOverflow!请阅读how to ask a question(尤其是how to create a good example)以获得良好的响应。一个示例 DataFrame 和预期输出将大大有助于回答您的问题。
-
@Alex 添加了示例数据