Python 根据if条件在一行中显示列指定
继续自,但相关代码为“”:Python 根据if条件在一行中显示列指定,python,pandas,Python,Pandas,继续自,但相关代码为“”: 我需要更改pandas dataframe的一列,但我发现的解决方案需要大量的蛮力:它缺乏通用性,必须为每个调用设置条件,因为它是一个时间增量索引,并且收集的数据是随机的。由于在数据收集过程中,我有几个需要为阶段分配的条件,所以我希望有一个更干净的选择 以下是详细情况: 我有几个步骤,需要给出边界。我希望他们在各自的一行中完成。目前,我为开始和停止创建索引键,和/或处理时间增量,然后建立变量 我希望所有7个都是这样: df['proc'] = np.wher
我需要更改pandas dataframe的一列,但我发现的解决方案需要大量的蛮力:它缺乏通用性,必须为每个调用设置条件,因为它是一个时间增量索引,并且收集的数据是随机的。由于在数据收集过程中,我有几个需要为阶段分配的条件,所以我希望有一个更干净的选择 以下是详细情况: 我有几个步骤,需要给出边界。我希望他们在各自的一行中完成。目前,我为开始和停止创建索引键,和/或处理时间增量,然后建立变量 我希望所有7个都是这样:
df['proc'] = np.where((df['press']>1100),'gas soak','pressurize')
相反,它们首先调用索引键:
idxPnotT = df[df.proc == 'gas soak'].index.tolist()
idxHS = idxPnotT[0]
idxDil0 = idxPnotT[0] + pd.Timedelta(minutes=1)
然后他们使用索引键进行赋值
df.loc[idxHS:idxDil0].proc = 'gas soak'
代码不漂亮,缺乏python允许的平滑度。再次感谢所有的帮助
Alberto Garcia Raboso帮助澄清的原始代码中有一个错误,
**由于df.loc[idxHS:idxDil0].proc而不是df.loc[idxHS:idxDil0,'proc']
而设置了CopyWarning
。然而,这并不能减轻原始帖子的意图:简化每个数据运行步骤所需的代码行
df.loc[idxHS:idxDil0].proc='气体浸泡'
您正试图在数据帧df
的切片df.loc[idxHS:idxDil0]
上设置值。问题在于,该切片可能是一个副本,而不是df
的视图。如果在副本上设置值,原始数据帧将保持不变,这就是警告的内容
把那行改成
df.loc[idxHS:idxDil0,'proc']=“气体浸泡”
正如警告信息所示。更大的问题是将这4行压缩为1行,并使用单行函数使其更简单、更清晰。您的编辑使我的答案看起来与您的问题无关。我认为你应该将编辑内容回滚,并将其作为问题的更新进行阅读。关于行压缩:在重新阅读了你的问题(以及顶部链接的问题)后,我仍然不知道你想做什么。你是说在某些情况下,你会有状态变化之类的事情吗?我看到了你给出的答案,我感谢你花时间提供答案。修正案已改回原处。请注意:问题是,如果可能的话,我想简化声明;我想有人可能会建议使用if条件,或者我是否以错误的方式进行操作。@double0darbo:谢谢您的编辑。你仍然没有解释你想做什么。