继续separate question,但相关的代码`:
我需要更改一个pandas数据框的列,但我找到的解决方案需要大量的暴力:由于必须为每个调用设置条件,它缺乏通用性,这要归功于它是timedelta索引和随机性收集的数据。由于我在数据收集期间需要为阶段分配几个条件,所以我希望有更清洁的选择。
以下是纲要:
我有几个步骤,需要给出边界。我希望他们各自在一行中完成。目前,我为启动和停止创建索引键,和/或处理时间增量,然后建立变量。
我希望所有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帮助澄清了**SettingWithCopyWarning
归因于df.loc[idxHS:idxDil0].proc
而不是df.loc[idxHS:idxDil0,'proc']
。但是,这并没有减轻原始帖子的意图:简化每个数据运行中每步所需的代码行。
答案 0 :(得分:0)
在第
行 df.loc[idxHS:idxDil0].proc = 'gas soak'
您正尝试在数据框df.loc[idxHS:idxDil0]
的切片df
上设置值。问题是切片可能变成副本而不是df
的视图。如果您在副本上设置值,则原始数据框保持不变 - 这就是警告的内容。
将该行更改为
df.loc[idxHS:idxDil0, 'proc'] = 'gas soak'
正如警告信息所示。