Использовать функцию 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
Это вариант ответа @ 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
Я пытался с .join ()
df1 = pd.DataFrame(results_index)
df2 = pd.DataFrame(results_data)
result = df1.join(df2, how='outer').set_index(['p','q'])
Я получил те же результаты и нашел это проще Надеюсь, это поможет вам.
Создать словарь списков и перейти к 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