Pandas数据帧减少特定日期之间的行值

时间:2015-10-05 02:29:12

标签: python pandas

datetime       JD
2000-01-01      1
2000-01-02      2
2000-01-03      3
2000-01-04      4
2000-01-05      5
2000-01-06      6
2000-01-07      7
2000-01-08      8
2000-01-09      9

我有上面的dtaaframe,索引是列日期时间。我想使用日期(而不仅仅是行号)从2000年1月5日到2000年1月8日减少JD列(1)中的值。是否有一个pandas命令来执行此操作?我一直在玩申请,但不知道如何使用

2 个答案:

答案 0 :(得分:2)

如果索引是DatetimeIndex,您可以使用此切片表示法来更新相应的行:

df.ix['2000-01-05':'2000-01-08', 'JD'] -= 1 
print df

如果没有,您可以先使用以下方法转换索引:

df.index = pd.to_datetime(df.index)

输出:

            JD
2000-01-01   1
2000-01-02   2
2000-01-03   3
2000-01-04   4
2000-01-05   4
2000-01-06   5
2000-01-07   6
2000-01-08   7
2000-01-09   9

答案 1 :(得分:1)

@ YS-L的解决方案有效,但我想我指出没有必要转换索引类型。以下内容适用于" native"日期时间对象。例如,要选择所需的行,以下操作:

idx = (df.index >= datetime.datetime(2000, 1, 5)) & (df.index < datetime.datetime(2000, 1, 8))
df.ix[idx, 'JD'] -= 1

idx = (df.index >= datetime.datetime(2000, 1, 5)) & (df.index < datetime.datetime(2000, 1, 8))
df.ix[idx, 'JD'] = df[idx].JD - 1