熊猫数据框无法将值分配给切片子集

我正在尝试更改片中除第一个以外的所有值,但它不起作用...我在做什么错?


print(test)

test.loc[(test.col_1==-5)&(test.index>'2018-07-17 13:00:00')&(test.index<'2018-07-17 14:00:00'),['col_1']][1:]=-1

print(test)

提供以下输出


17/07/2018 13:51:00 -5

17/07/2018 13:52:00 -1

17/07/2018 13:53:00 -5

17/07/2018 13:54:00 -5

17/07/2018 13:55:00 -5

17/07/2018 13:56:00 -5

17/07/2018 13:57:00 -5

17/07/2018 13:58:00 -5

17/07/2018 13:59:00 -5


17/07/2018 13:51:00 -5

17/07/2018 13:52:00 -1

17/07/2018 13:53:00 -5

17/07/2018 13:54:00 -5

17/07/2018 13:55:00 -5

17/07/2018 13:56:00 -5

17/07/2018 13:57:00 -5

17/07/2018 13:58:00 -5

17/07/2018 13:59:00 -5

而我期望第二个输出是


17/07/2018 13:51:00 -5

17/07/2018 13:52:00 -1

17/07/2018 13:53:00 -1

17/07/2018 13:54:00 -1

17/07/2018 13:55:00 -1

17/07/2018 13:56:00 -1

17/07/2018 13:57:00 -1

17/07/2018 13:58:00 -1

17/07/2018 13:59:00 -1


饮歌长啸
浏览 130回答 2
2回答

红糖糍粑

您可以使用numpy.where并使用索引[1:]来排除该标准是第一次True。这是一个最小的示例:df = pd.DataFrame([[1, -5], [2, -5], [3, -1], [4, -5], [5, -5], [6, -1]],&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; columns=['col1', 'col2'])df.iloc[np.where(df['col1'].between(2, 5))[0][1:], 1] = -1print(df)&nbsp; &nbsp;col1&nbsp; col20&nbsp; &nbsp; &nbsp;1&nbsp; &nbsp; -51&nbsp; &nbsp; &nbsp;2&nbsp; &nbsp; -52&nbsp; &nbsp; &nbsp;3&nbsp; &nbsp; -13&nbsp; &nbsp; &nbsp;4&nbsp; &nbsp; -14&nbsp; &nbsp; &nbsp;5&nbsp; &nbsp; -15&nbsp; &nbsp; &nbsp;6&nbsp; &nbsp; -1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python