我有一个数据框

[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做,但我不知道怎么做。。。
谢谢您!

最佳答案

您可以将列转换为TimedeltaIndexto_timedeltaadd+)或substract(-)值:

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

关于python - DateOffset Pandas 减法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43591847/

10-09 00:35