Ho due colonne in un frame di dati di Pandas che sono date.Panda: sottraendo due colonne di data e il risultato è un numero intero
Sto cercando di sottrarre una colonna da un'altra e il risultato è la differenza in numero di giorni come numero intero.
Una sbirciatina ai dati:
df_test.head(10)
Out[20]:
First_Date Second Date
0 2016-02-09 2015-11-19
1 2016-01-06 2015-11-30
2 NaT 2015-12-04
3 2016-01-06 2015-12-08
4 NaT 2015-12-09
5 2016-01-07 2015-12-11
6 NaT 2015-12-12
7 NaT 2015-12-14
8 2016-01-06 2015-12-14
9 NaT 2015-12-15
ho creato una nuova colonna con successo con la differenza:
df_test['Difference'] = df_test['First_Date'].sub(df_test['Second Date'], axis=0)
df_test.head()
Out[22]:
First_Date Second Date Difference
0 2016-02-09 2015-11-19 82 days
1 2016-01-06 2015-11-30 37 days
2 NaT 2015-12-04 NaT
3 2016-01-06 2015-12-08 29 days
4 NaT 2015-12-09 NaT
Tuttavia non sono in grado di ottenere una versione numerica del risultato:
df_test['Difference'] = df_test[['Difference']].apply(pd.to_numeric)
df_test.head()
Out[25]:
First_Date Second Date Difference
0 2016-02-09 2015-11-19 7.084800e+15
1 2016-01-06 2015-11-30 3.196800e+15
2 NaT 2015-12-04 NaN
3 2016-01-06 2015-12-08 2.505600e+15
4 NaT 2015-12-09 NaN
Sì, è una soluzione possibile, ma penso che non sia un approccio raccomandato, perché l'output della colonna 'Diffference' è' object' e l'elaborazione successiva (aggiunta, sottrazione ...) è impossibile. – jezrael
@jesrael, ci sono altri modi per fare, ad esempio, la tua soluzione. Tuttavia, l'aggiunta/sottrazione non è un problema con i NaN mescolati con i tipi int in una colonna. Verranno automaticamente convertiti in operazioni flottanti secondo necessità. – clocker
Non lo collaudo, grazie per il commento. – jezrael