我有一个带有索引,时间戳和一个值的数据集,该值存储在熊猫数据框中的三个单独的列中,例如:
我想过滤时间戳小时等于23的行,并在下一列中的值上添加标量。我如何有效地做到这一点?索引列在数据集中的设置不正确,我不能依靠它。
当前,我正在使用for循环遍历各行,检查时间戳中的小时是否等于23,并修改相应单元格中的值,但这需要很多时间。我尝试如下使用建议的here的.groupby方法,但这似乎不起作用。它对数据进行两次操作,使数据保持不变并抛出SettingWithCopyWarning。这是我尝试的。不过,我不确定这是否是最好的方法。
for index, data_slice in df.groupby(df["Date"].dt.hour == 23):
data_slice.loc["value"] += 1
答案 0 :(得分:2)
为什么要使用groupby,您可以尝试:
df.loc[df['Date'].dt.hour==23, 'value'] += 1