Reputation: 43
I need a faster way to convert a standard 2d dataframe with multiple columns into a multiindex dataframe with only a single column -- please see example below.
For large datasets, the below method takes several minutes to run. I imagine there's a better way; any help appreciated.
cols = ['Tom','Jerry']
data_ = [['Level 58','Level 10'],['Level 59','Level 14'],['Level 60','Level 18']]
idx = pd.Index([datetime(2022,1,1), datetime(2022,1,2), datetime(2022,1,3)])
df = pd.DataFrame(data = data_, columns = cols, index=idx)
Tom Jerry
2022-01-01 Level 58 Level 10
2022-01-02 Level 59 Level 14
2022-01-03 Level 60 Level 18
pd.concat( \
[pd.DataFrame(df[[i]].values, \
index=pd.MultiIndex.from_tuples([(df[[i]].columns[0], x) for x in df.index], \
names = ['name', 'date'])) \
for i in df.columns])
0
name date
Tom 2022-01-01 Level 58
2022-01-02 Level 59
2022-01-03 Level 60
Jerry 2022-01-01 Level 10
2022-01-02 Level 14
2022-01-03 Level 18
Screenshot of current method outputs
Upvotes: 2
Views: 507