2015-10-05 106 views
1
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,其中索引是列datetime。我想用2000年1月5日至2000年1月8日的日期(而不僅僅是行數)減少JD列(1)的值。有沒有熊貓的命令來做到這一點?我一直在申請玩耍,但不知道如何使用它熊貓數據框減少特定日期之間的行值

回答

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 
+0

尼斯和簡單,無需申請。 – Leb

+0

ty @ YS-L,可以解決你的問題。擴展到http://stackoverflow.com/questions/32941009/reduce-column-values-for-leap-years-in-pandas-dataframe – user308827

1

@ YS-L的解決方案有效,但我想我會指出,不需要轉換索引類型。以下內容適用於「本機」日期時間對象。例如,選擇您想要的行,下面的工作:

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 
+0

ty @Oliver,可以你的soln。被擴展到http://stackoverflow.com/questions/32941009/reduce-column-values-for-leap-years-in-pandas-dataframe – user308827

相關問題