Условные даты вычитания - PullRequest
0 голосов
/ 10 октября 2018

Допустим, у меня есть таблица данных панд ниже.Как я могу вычесть один месяц из Var2, когда Var0 равен b.Я хотел бы сделать это условно, а не создавать новый набор данных только со значениями var0 b, вычитая, а затем повторно объединяя.Var2 в пандах datetime.

Var0    Var1    Var2
x   76.27   2018-05
x   93.38   2018-06
a   73      2018-05
a   74.33   2018-05
b   184.08  2018-03
b   184.08  2018-02
c   67.26   2018-06
c   67.18   2018-07

Ответы [ 2 ]

0 голосов
/ 10 октября 2018
df['Var2'] = pd.to_datetime(df['Var2'])
df['Var2'] += np.where(df['Var0'] == 'b',
                       pd.to_timedelta(1, unit='M'),
                       pd.to_timedelta(0, unit='M'))
0 голосов
/ 10 октября 2018

Использование DateOffset

df.Var2=pd.to_datetime(df.Var2,format='%Y-%m')
df.loc[df.Var0=='b','Var2']=df.Var2-pd.DateOffset(months=1)
df.Var2=df.Var2.dt.strftime('%Y-%m')
df
Out[24]: 
  Var0    Var1     Var2
0    x   76.27  2018-05
1    x   93.38  2018-06
2    a   73.00  2018-05
3    a   74.33  2018-05
4    b  184.08  2018-02
5    b  184.08  2018-01
6    c   67.26  2018-06
7    c   67.18  2018-07
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...