【发布时间】:2018-08-20 01:28:13
【问题描述】:
这是来自 jupyter notebook 的输入和输出。我需要帮助确定我无法准确选择和设置“went_out”列中的数据的原因。
两个红色下划线单元格都应该显示其所在行的日期时间列中的数据,但只有一个单元格准确地显示了它。事实证明,许多符合我条件的行没有被选中和设置。
这是我使用的代码示例:
# your answer here
df.loc[(df['reading_type'] == 'motion') & (df['value'] == 255), 'event'] = 'motion on'
df.loc[(df['reading_type'] == 'motion') & (df['value'] == 0), 'event'] = 'motion off'
df2 = df.loc[(df['reading_type'] == 'door') | (df['event'] == 'motion on')].copy()
df2.loc[(df['event'] == 'door close') & (df['event'].shift(-1) == 'door open'), 'went_out'] = df2['datetime']
df2
这里是 jupyter notebook 文件和 csv 文件的链接:
【问题讨论】:
-
你可以试试
df2.loc[( (df['event'] == 'door close') & (df['event'].shift(-1) == 'door open') ), 'went_out'] = df2['datetime']。我已将选择条件添加到一个 () 而不是 2 个单独的。 -
@manoj 不,我刚试过,它仍然给出相同的输出。
-
@Benjamin 你能提供样本数据(在 csv 中),以便我可以在本地进行测试。
-
@BhaveshGhodasara 好的,我已经在帖子底部添加了谷歌驱动器链接。
-
我刚刚意识到我犯了一个错误。我应该在 df2 而不是 df 上进行调节。现在可以了。
标签: python pandas jupyter-notebook jupyter data-science