मान लें कि मेरे पास नीचे पांडा डेटाफ्रेम है। मैं कैसे एक महीने को Var2 से घटा सकता हूँ जब Var0 b के बराबर है। मैं इसे केवल var0 b मानों के साथ एक नया डेटा-सेट बनाने, घटाने और फिर से विलय करने के बजाय सशर्त रूप से करना चाहता हूं। Var2 पांडा डेटाटाइम में है।

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
0
J. Dykstra 10 अक्टूबर 2018, 20:05

2 जवाब

सबसे बढ़िया उत्तर

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
2
BENY 10 अक्टूबर 2018, 17:10
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
PMende 10 अक्टूबर 2018, 17:12