首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用.between函数将对象分配给列

如何使用.between函数将对象分配给列
EN

Stack Overflow用户
提问于 2019-12-25 01:06:33
回答 2查看 39关注 0票数 1

我正在尝试通过峰值、中峰值、非峰值等来标记数据帧。我设法在这个‘中峰’,df‘Peak’df‘’func‘==’Winter_Weekend‘中获得了我想要赋值的值。但是,当我包含这个函数时,我得到了错误: SyntaxError: can't .between_time to function call。我不确定如何解决这个问题。我的目标是让代码像这样工作。我需要另一个函数吗?或者我需要改变语法吗?谢谢你的帮助。

代码语言:javascript
复制
df['Peak'][df['func'] == 'Winter_Weekend'].between_time('16:00','21:00', include_end=False) = 'Mid-Peak'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-25 01:36:02

通常,您不能将结果赋值给函数调用,因此需要不同的语法。你可以试一试

代码语言:javascript
复制
selection = df[df['func'] == 'Winter_Weekend'].between_time('16:00','21:00', include_end=False)
selection["Peak"] = "Mid-Peak"

但这并不会更新原始的df,只会更新复制到selection中的行。

要更新原始数据帧,一种方法是使用loc选择行和列,使用.indexbetween_time选择应用于原始数据帧:

代码语言:javascript
复制
ww = df["func"] == "Winter_Weekend"
df.loc[df[ww].between_time('16:00', '21:00', include_end=False).index, "Peak"] = "Mid-Peak"
票数 0
EN

Stack Overflow用户

发布于 2019-12-25 01:55:04

我建议在这里使用np.where(),如下所示:

代码语言:javascript
复制
df['Peak'] = np.where(df[df['func'] == 'Winter_Weekend'].between_time('16:00','21:00', include_end=False), 'Mid-Peak', df['Peak'])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59471682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档