我有以下Pandas Dataframe :
issue_stat timestamp state
0 11:00:00 hi
1 12:40:00 lo
9 13:00:00 av
3 15:00:00 hi
8 18:00:00 hi
4 20:00:00 lo
我想把timestamp=18:00:00
上面一行的state
Map到jazz
。我必须在代码中使用timestamp=18:00:00
。我该怎么做呢?
我知道如何Maptimestamp=18:00:00
的state
:
dataframe.loc[dataframe['timestamp'] == '18:00:00', 'state'] = whatever
但是我很难指向它上面的行。再次强调,我必须在代码中引用timestamp = 18:00:00
。
因此输出如下所示:
issue_stat timestamp state
0 11:00:00 hi
1 12:40:00 lo
9 13:00:00 av
3 15:00:00 jazz
8 18:00:00 hi
4 20:00:00 lo
3条答案
按热度按时间f8rj6qna1#
shift()
方法在任一方向上移动序列。因此,要设置以下时间戳为18:00的单元格的状态:产生:
sczxawaw2#
可以使用shift函数获取 Dataframe 的前一行,然后使用布尔索引选择timestamp等于18:00:00的行,并更新这些行的状态列。
以下是如何执行此操作的示例:
这将向 Dataframe 添加一个名为prev_state的新列,其中包含前一行的state列的值,然后,它将把时间戳等于18:00:00的行的prev_state列更新为jazz。
如果要更新state列而不是添加新列,只需使用以下代码:
这将把timestamp等于18:00:00的行的state列更新为jazz。
7lrncoxx3#
您可以使用
shift()
:我引用了值
C
,但值B
-1行的值发生了变化。一个二个一个一个
但在您的示例中,您将选择列
timestamp
而不是B
,并选择一个值。