在我的工作流程中的某個時刻,我最終得到了一個帶有一些列和一些行的常規熊貓數據框。我想使用df.to_latex()
將此DataFrame導出到乳膠表中。這很好,但是,我知道要使用多列,其中一些列是多表的一部分。例如,一個DataFrame的列a,b,c,d,e我想離開列a,但是將b和c,以及d和e組合起來。將一些DataFrame列重新索引到多索引
import numpy as np
import pandas as pd
# where I am
data = np.arange(15).reshape(3, 5)
df = pd.DataFrame(data=data, columns=['a', 'b', 'c', 'd', 'e'])
它看起來像這樣:
In [161]: df
Out[161]:
a b c d e
0 0 1 2 3 4
1 5 6 7 8 9
2 10 11 12 13 14
我想組列B和C,以及d和e,但留下一個孤單。所以我希望的輸出應該是這樣的。
# where I want to be: leave column 'a' alone, group b&c as well as d&e
multi_index = pd.MultiIndex.from_tuples([
('a', ''),
('bc', 'b'),
('bc', 'c'),
('de', 'd'),
('de', 'e'),
])
desired = pd.DataFrame(data, columns=multi_index)
它看起來像這樣:
In [162]: desired
Out[162]:
a bc de
b c d e
0 0 1 2 3 4
1 5 6 7 8 9
2 10 11 12 13 14
爲了到那裏,我想簡單的重新索引。這給了我想要的形狀,但所有列只有NaN的價值。
# how can use df and my multiindexreindex to multi column DataFrame
result = df.reindex(columns=multi_index)
結果看起來像描述,正確的指標,但所有NaN
In [166]: result
Out[166]:
a bc de
b c e e
0 NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN
我怎樣才能得到我想要的結果?
'reindex'將無法正常工作。它採用當前幀和當前索引,並按照新索引按照傳遞索引的順序排列索引。它不會從單個索引到多索引神奇地對齊。你得到所有的NaN,因爲原始幀中的位置'[0,(a,None)]'或'[0,(bc,b)]'(等)處沒有數據。我不明白'pd.DataFrame(data,columns = multi_index)'有什麼問題。如果沒有,總會有一個古老的'groupby'... – Kartik
@Kartik TY輸入。我不能簡單地做''pd.DataFrame(data,columns = multi_index)'',因爲我只有''df'',而不是''data''本身。這只是代碼來顯示想要的結果,我想要去的地方。 – Nras