Reputation: 23
I try pulling the columns from my dataframe using df.columns and I get:
MultiIndex([( 'time', ''),
('numbers', 11),
('numbers', 12),
('numbers', 13),
('numbers', 14)],
names=[None, 'letters'])
I have never used a MultiIndex before so I am now confused how to get 'Time' as a column now instead of an index so I can go from this DataFrame:
df =
time numbers
letters a b c d
0 22:45:00 1016.0 1059.0 1042.0 1007.0
1 23:00:00 1006.0 10507.0 1040.0 1084.0
2 23:15:00 1084.0 1058.0 1047.0 1495.0
3 23:30:00 1095.0 1498.0 1480.0 1048.0
4 23:45:00 1098.0 1002.0 1044.0 1084.0
5 00:00:00 1044.0 1517.0 1084.0 1051.0
(By preferably just removing the MultiIndex) So it resembles this:
df =
time a b c d
0 22:45:00 1016.0 1059.0 1042.0 1007.0
1 23:00:00 1006.0 1007.0 1040.0 1084.0
2 23:15:00 1084.0 1058.0 1047.0 1495.0
3 23:30:00 1095.0 1498.0 1480.0 1048.0
4 23:45:00 1098.0 1002.0 1044.0 1084.0
5 00:00:00 1044.0 1517.0 1084.0 1051.0
I have tried using droplevel but I get
Cannot remove 1 levels from an index with 1 levels: at least one level must be left.
Is this because the index is in the columns and not the rows?
Upvotes: 2
Views: 3447
Reputation: 153460
IIUC you have this:
dd = {('time', ''): {0: '22:45:00',
1: '23:00:00',
2: '23:15:00',
3: '23:30:00',
4: '23:45:00',
5: '00:00:00'},
('numbers', 'a'): {0: 1016.0,
1: 1006.0,
2: 1084.0,
3: 1095.0,
4: 1098.0,
5: 1044.0},
('numbers', 'b'): {0: 1059.0,
1: 10507.0,
2: 1058.0,
3: 1498.0,
4: 1002.0,
5: 1517.0},
('numbers', 'c'): {0: 1042.0,
1: 1040.0,
2: 1047.0,
3: 1480.0,
4: 1044.0,
5: 1084.0},
('numbers', 'd'): {0: 1007.0,
1: 1084.0,
2: 1495.0,
3: 1048.0,
4: 1084.0,
5: 1051.0}}
df1 = pd.DataFrame(dd).rename_axis([None,'letters'], axis=1)
df1
Input Dataframe:
time numbers
letters a b c d
0 22:45:00 1016.0 1059.0 1042.0 1007.0
1 23:00:00 1006.0 10507.0 1040.0 1084.0
2 23:15:00 1084.0 1058.0 1047.0 1495.0
3 23:30:00 1095.0 1498.0 1480.0 1048.0
4 23:45:00 1098.0 1002.0 1044.0 1084.0
5 00:00:00 1044.0 1517.0 1084.0 1051.0
Then,
df2 = df1.set_index('time')
df2.columns = df2.columns.droplevel(0)
df2.reset_index()
Output:
letters time a b c d
0 22:45:00 1016.0 1059.0 1042.0 1007.0
1 23:00:00 1006.0 10507.0 1040.0 1084.0
2 23:15:00 1084.0 1058.0 1047.0 1495.0
3 23:30:00 1095.0 1498.0 1480.0 1048.0
4 23:45:00 1098.0 1002.0 1044.0 1084.0
5 00:00:00 1044.0 1517.0 1084.0 1051.0
Upvotes: 2