Wie kann ich eine Ebene in multi-indizierten Spalten löschen, wenn ich drei Spalten in datetime umwandle? Das folgende Beispiel enthält nur drei Spalten, während in meinem Datumsrahmen natürlich mehr Spalten vorhanden sind und diese anderen Spalten zwei Ebenennamen verwenden.Pandas to_datetime mit multiindex
>>> import pandas as pd
>>> df = pd.DataFrame([[2010, 1, 2],[2011,1,3],[2012,2,3]])
>>> df.columns = [['year', 'month', 'day'],['y', 'm', 'd']]
>>> print(df)
year month day
y m d
0 2010 1 2
1 2011 1 3
2 2012 2 3
>>> pd.to_datetime(df[['year', 'month', 'day']])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.7/site-packages/pandas/core/tools/datetimes.py", line 512, in to_datetime
result = _assemble_from_unit_mappings(arg, errors=errors)
File "/usr/lib64/python2.7/site-packages/pandas/core/tools/datetimes.py", line 582, in _assemble_from_unit_mappings
unit = {k: f(k) for k in arg.keys()}
File "/usr/lib64/python2.7/site-packages/pandas/core/tools/datetimes.py", line 582, in <dictcomp>
unit = {k: f(k) for k in arg.keys()}
File "/usr/lib64/python2.7/site-packages/pandas/core/tools/datetimes.py", line 577, in f
if value.lower() in _unit_map:
AttributeError: 'tuple' object has no attribute 'lower'
Edit: mehr Spalten hinzufügen zu erklären, besser:
>>> df = pd.DataFrame([[2010, 1, 2, 10, 2],[2011,1,3,11,3],[2012,2,3,12,2]])
>>> df.columns = [['year', 'month', 'day', 'temp', 'wind_speed'],['', '', '', 'degc','m/s']]
>>> print(df)
year month day temp wind_speed
degc m/s
0 2010 1 2 10 2
1 2011 1 3 11 3
2 2012 2 3 12 2
Was ich brauche, ist zunächst drei Spalten Datetime-Index zu kombinieren, so dass zwei letzten Spalten mit Daten.
Können Sie mehr Daten mit den gewünschten Ausgang hinzufügen? – jezrael
Danke, ich füge auch eine Lösung dafür hinzu. – jezrael