我有一個數據幀DateOffset熊貓減法
[in] MyDates
[out]
2017-04-04 -5.0
2017-04-03 -5.0
2017-03-31 -4.0
2017-03-30 -6.0
2017-03-29 -5.0
2017-03-28 -5.0
每個數字對應的,我應該有多少天從對應的日期添加或刪除。我想創建一個索引日期的新列減去第一列中的天數。我知道我可以用DateOffset做到這一點,但我無法弄清楚...
謝謝!
我有一個數據幀DateOffset熊貓減法
[in] MyDates
[out]
2017-04-04 -5.0
2017-04-03 -5.0
2017-03-31 -4.0
2017-03-30 -6.0
2017-03-29 -5.0
2017-03-28 -5.0
每個數字對應的,我應該有多少天從對應的日期添加或刪除。我想創建一個索引日期的新列減去第一列中的天數。我知道我可以用DateOffset做到這一點,但我無法弄清楚...
謝謝!
可以列轉換爲TimedeltaIndex
或to_timedelta
和add
(+
)或。減去(-)
值:
df['new'] = df.index - pd.TimedeltaIndex(df['col'], unit='d')
print (df)
col new
2017-04-04 -5.0 2017-04-09
2017-04-03 -5.0 2017-04-08
2017-03-31 -4.0 2017-04-04
2017-03-30 -6.0 2017-04-05
2017-03-29 -5.0 2017-04-03
2017-03-28 -5.0 2017-04-02
或者:
df['new'] = df.index + pd.to_timedelta(df['col'], unit='d')
print (df)
col new
2017-04-04 -5.0 2017-03-30
2017-04-03 -5.0 2017-03-29
2017-03-31 -4.0 2017-03-27
2017-03-30 -6.0 2017-03-24
2017-03-29 -5.0 2017-03-24
2017-03-28 -5.0 2017-03-23
如果Series
爲input
添加to_frame
:
df = s.to_frame('date')
df['new'] = df.index - pd.TimedeltaIndex(df['date'], unit='d')
print (df)
date new
2017-04-04 -5.0 2017-04-09
2017-04-03 -5.0 2017-04-08
2017-03-31 -4.0 2017-04-04
2017-03-30 -6.0 2017-04-05
2017-03-29 -5.0 2017-04-03
2017-03-28 -5.0 2017-04-02
我不確定,所以我會添加兩個解決方案。 – jezrael
這是補充,謝謝你的幫助! – user6457870
IIUC要構建一個TimedeltaIndex
和補充一點:
In [173]:
df.index + pd.TimedeltaIndex(df['days'], unit='d')
Out[173]:
DatetimeIndex(['2017-03-30', '2017-03-29', '2017-03-27', '2017-03-24',
'2017-03-24', '2017-03-23'],
dtype='datetime64[ns]', freq=None)
如果它是一列你只是做df['Dates'] + pd.TimedeltaIndex(df['days'], unit='d')
In [176]:
df['offset_date'] = df['Dates'] + pd.TimedeltaIndex(df['days'], unit='d')
df
Out[176]:
Dates days offset_date
0 2017-04-04 -5.0 2017-03-30
1 2017-04-03 -5.0 2017-03-29
2 2017-03-31 -4.0 2017-03-27
3 2017-03-30 -6.0 2017-03-24
4 2017-03-29 -5.0 2017-03-24
5 2017-03-28 -5.0 2017-03-23
如果它的索引和要添加爲一列它是相當很多相同的操作:
In [180]:
df['offset_date'] = df.index + pd.TimedeltaIndex(df['days'], unit='d')
df
Out[180]:
days offset_date
Dates
2017-04-04 -5.0 2017-03-30
2017-04-03 -5.0 2017-03-29
2017-03-31 -4.0 2017-03-27
2017-03-30 -6.0 2017-03-24
2017-03-29 -5.0 2017-03-24
2017-03-28 -5.0 2017-03-23
可能看起來像一個隨機的評論,但只是想與你一起回顧'100K'的旅程。我記得在2015年夏天我開始回答NumPy的問題時,我看到了你回答問題的答案,我們約在35-40K左右的時候回答了相同的問題。不知何故,我們的Stackoverflow旅程已經平行,不僅僅是代表的意義,而是通過發佈答案來改進SO社區的意圖,並通過清理dup問題和一般的這類東西來保持它的清潔。所以,只是想祝賀你取得這樣的成就和迄今爲止的旅程:) – Divakar
@Divakar謝謝..我一直對你的專業知識印象深刻,我總是會學到新的東西。說實話,我對SO有點厭倦了,原因是問題不好或問題的第一個答案很糟糕/有一個不明確的問題/或者由於目標轉移而不斷需要修改答案。我期待着你的100K代表目標,並且無論如何我會幫助我 – EdChum
是的,不斷需要改裝來特別用基於數據的語言/模塊/軟件包來關閉重複模塊一直是一個問題。也許SO會設計一個更好的模型來關閉/處理這些模型。讓我們期待最好的享受現在的時刻:) – Divakar
這是一個系列或df? – EdChum