Давайте возьмем этот пример кадра данных:
import pandas as pd
import numpy as np
arrays = [[1, 1, 1, 1, 2, 2, 2, 2], [28, 29, 30, 31 , 1, 2, 3, 4]]
index = pd.MultiIndex.from_arrays(arrays, names=('Month', 'Day'))
df = pd.DataFrame(np.random.randn(8,2), index=index)
Урожайность:
Month Day 0 1
0 1 28 -0.295065 -0.843433
1 1 29 0.367759 0.837147
2 1 30 0.051956 0.430499
3 1 31 1.917990 1.066545
4 2 1 1.345338 -0.600304
5 2 2 -0.475890 0.763301
6 2 3 0.560985 1.747668
7 2 4 0.377741 -0.310094
Просто используйте reset_index()
, объедините столбцы и конвертируйте в datetime:
new = df.reset_index()
new['Date'] = pd.to_datetime(new['Month'].astype(str) + '/' + new['Day'].astype(str), format='%m/%d')
Урожайность:
Month Day 0 1 Date
0 1 28 -0.295065 -0.843433 1900-01-28
1 1 29 0.367759 0.837147 1900-01-29
2 1 30 0.051956 0.430499 1900-01-30
3 1 31 1.917990 1.066545 1900-01-31
4 2 1 1.345338 -0.600304 1900-02-01
5 2 2 -0.475890 0.763301 1900-02-02
6 2 3 0.560985 1.747668 1900-02-03
7 2 4 0.377741 -0.310094 1900-02-04
Наконец, используйте столбцы set_index()
и drop()
:
new = new.set_index('Date').drop(['Month','Day'], axis=1)
Урожайность:
0 1
Date
1900-01-28 0.503419 -1.197496
1900-01-29 -0.059114 0.552766
1900-01-30 0.365710 -0.079030
1900-01-31 -2.782296 1.027040
1900-02-01 1.343155 -0.846419
1900-02-02 1.334560 0.392820
1900-02-03 0.537082 1.486579
1900-02-04 0.506200 0.138864