Für mich arbeitet values
hinzufügen zum Umwandeln Series
-numpy array
:
s['Expire Days'] = pd.to_datetime(s['Expiration']).values -
s.index.get_level_values('Date')
Probe:
import pandas as pd
s = pd.DataFrame({'Expiration': {(pd.Timestamp('2015-03-04 00:00:00'), 1): '2015-03-05',
(pd.Timestamp('2015-03-03 00:00:00'), 2): '2015-03-05'}})
s = s.rename_axis(['Date','a'])
print (s)
Expiration
Date a
2015-03-03 2 2015-03-05
2015-03-04 1 2015-03-05
s['Expire Days'] = pd.to_datetime(s['Expiration']).values -
s.index.get_level_values('Date')
print (s)
Expiration Expire Days
Date a
2015-03-04 1 2015-03-05 1 days
2015-03-03 1 2015-03-05 2 days
EDIT von Kommentar:
s['Date'] = s.index.get_level_values('Date')
s['Expire Days'] = (pd.to_datetime(s['Expiration']) - s['Date'])
Arbeit schön, weil ndarray
als Ausgang get_level_values
wird in Spalte Expire Days
in Series
umgewandelt.
s['Expire Days'] = (pd.to_datetime(s['Expiration']) - s.index.get_level_values('Date'))
nicht funktioniert, pd.to_datetime (s [ 'Verfall']) ist Series
und s.index.get_level_values('Date')
ndarray
ist. Sie benötigen also beide numpy Arrays oder beide Serien.
Und weil Fehler:
"Index._join_level on non-unique index is not implemented."
in pd.to_datetime(s['Expiration']) - s.index.get_level_values('Date').to_series()
, Verwendung sowohl ndarray
konvertieren.
Versuch 's [' Expire Days '] = (pd.to_datetime (s [' Ablauf ']) - s.index.get_level_values (' Date '). To_series()) ' – jezrael
Erzeugt den Fehler:" Index. _join_level für nicht eindeutigen Index ist nicht implementiert. " Das Datum wird nicht eindeutig sein, es ist Teil eines Multi-Index. – cjm2671
Ja, ich bekomme denselben Fehler. Eine mögliche Lösung ist also das Arbeiten mit numpigen Arrays. – jezrael