Как лучше всего создать Pandas MultiIndex из списка словарей?

Использовать функцию Parsename ()

with cte as(
    select 'Aria,Karimi' as FullName
    Union
    select 'Joe,Karimi' as FullName
    Union
    select 'Bab,Karimi' as FullName
)

SELECT PARSENAME(REPLACE(FullName,',','.'),2) as Name, 
       PARSENAME(REPLACE(FullName,',','.'),1) as Family
    FROM cte

Результат

Name    Family
-----   ------
Aria    Karimi
Bab     Karimi
Joe     Karimi
1
задан Bill 17 January 2019 в 00:15
поделиться

3 ответа

Это вариант ответа @ jezrael. Чуть более лаконично и имеет преимущество, заключающееся в возможности справиться с потенциальной несогласованностью в словарях параметров. Но не так быстро.

index_df = pd.DataFrame(results_index)
index = pd.MultiIndex.from_arrays(index_df.values.transpose(),
                                  names=index_df.columns)
pd.DataFrame(results_data, index=index)

Вывод:

        A     B
p q            
2 7  0.18  0.18
  5  0.67  0.21
1 4  0.96  0.45
2 4  0.58  0.66
0
ответ дан Bill 17 January 2019 в 00:15
поделиться

Я пытался с .join ()

df1 = pd.DataFrame(results_index)
df2 = pd.DataFrame(results_data)
result = df1.join(df2, how='outer').set_index(['p','q'])

Я получил те же результаты и нашел это проще Надеюсь, это поможет вам.

0
ответ дан Ch Ap 17 January 2019 в 00:15
поделиться

Создать словарь списков и перейти к MultiIndex.from_arrays :

#https://stackoverflow.com/a/33046935
d = {k: [dic[k] for dic in results_index] for k in results_index[0]}
print(d)
{'p': [2, 2, 1, 2], 'q': [7, 5, 4, 4]}

mux = pd.MultiIndex.from_arrays(list(d.values()), names=list(d))

df = pd.DataFrame(results_data, index=mux)
print (df)
        A     B
p q            
2 7  0.18  0.18
  5  0.67  0.21
1 4  0.96  0.45
2 4  0.58  0.66
0
ответ дан jezrael 17 January 2019 в 00:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: