我正在尝试通过峰值、中峰值、非峰值等来标记数据帧。我设法在这个‘中峰’,df‘Peak’df‘’func‘==’Winter_Weekend‘中获得了我想要赋值的值。但是,当我包含这个函数时,我得到了错误: SyntaxError: can't .between_time to function call。我不确定如何解决这个问题。我的目标是让代码像这样工作。我需要另一个函数吗?或者我需要改变语法吗?谢谢你的帮助。
df['Peak'][df['func'] == 'Winter_Weekend'].between_time('16:00','21:00', include_end=False) = 'Mid-Peak'发布于 2019-12-25 01:36:02
通常,您不能将结果赋值给函数调用,因此需要不同的语法。你可以试一试
selection = df[df['func'] == 'Winter_Weekend'].between_time('16:00','21:00', include_end=False)
selection["Peak"] = "Mid-Peak"但这并不会更新原始的df,只会更新复制到selection中的行。
要更新原始数据帧,一种方法是使用loc选择行和列,使用.index将between_time选择应用于原始数据帧:
ww = df["func"] == "Winter_Weekend"
df.loc[df[ww].between_time('16:00', '21:00', include_end=False).index, "Peak"] = "Mid-Peak"发布于 2019-12-25 01:55:04
我建议在这里使用np.where(),如下所示:
df['Peak'] = np.where(df[df['func'] == 'Winter_Weekend'].between_time('16:00','21:00', include_end=False), 'Mid-Peak', df['Peak'])https://stackoverflow.com/questions/59471682
复制相似问题