Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据if条件在一行中显示列指定_Python_Pandas - Fatal编程技术网

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:谢谢您的编辑。你仍然没有解释你想做什么。