Я хотел бы создать фрейм данных pandas с несколькими столбцами, каждый из которых имеет больше и разные вложенные столбцы.Затем я хочу записать его в CSV и прочитать из него, сохраняя право на индексирование.
Вот пример:
col_1 = pd.MultiIndex.from_tuples([ ('Numbers', 'one'), ('Numbers','two')] )
col_2 = pd.MultiIndex.from_tuples([ ('Letters', 'A'), ('Letters', 'B'), ('Letters', 'C') ] )
num_data = [[0,1],[2,3]]
num_df = pd.DataFrame(num_data, columns=col_1)
let_data = [['a','b','c'],['d','e','f']]
let_df = pd.DataFrame(let_data, columns=col_2)
tot_df = pd.concat([let_df,num_df], axis=1)
, который дает:
Letters Numbers
A B C one two
0 a b c 0 1
1 d e f 2 3
Q1: есть ли лучший способ сделать это?Как я могу определить всю таблицу без concat?Q2: Как извлечь значения из одной строки?Когда я пытаюсь извлечь одну строку, у меня возникают проблемы, особенно когда я печатаю
tot_df.loc[tot_df['Letters','A'] == ['a'] ]
, и это потому, что "tot_df ['Letters', 'A']. Values" возвращает массив = ['a '' d '], а не (что я ожидаю) список [' a ',' d '].
Q3. Переходя теперь к части печати / чтения, я обычно использую методы to_csv () и read_csv (), но я получаю развернутый 1D-заголовок, как показано ниже:
tot_df.to_csv('multi_col.csv')
read_df = pd.read_csv('multi_col.csv', index_col = 0 )
read_df
Letters Letters.1 Letters.2 Numbers Numbers.1
NaN A B C one two
0.0 a b c 0 1
1.0 d e f 2 3
Может ли кто-нибудь из вас предложить лучшее решение?
Спасибо