У меня есть мультииндексный фрейм данных, и я хочу установить срез одного из его столбцов, равный серии, упорядоченный (отсортированный) в соответствии с индексом совпадения среза столбца и серии.Внутренний индекс столбца и индекс серии идентичны, за исключением их упорядочения (сортировки).(см. пример ниже)
Я могу сделать это, сначала отсортировав индекс серии по индексу столбца, а затем используя series.values (см. ниже), но это похоже на обходной путь, и мне было интересно, если этоможно напрямую назначить серию срезу столбца.
пример:
import pandas as pd
multi_index=pd.MultiIndex.from_product([['a','b'],['x','y']])
df=pd.DataFrame(0,multi_index,['p','q'])
s1=pd.Series([1,2],['y','x'])
df.loc['a','p']=s1[df.loc['a','p'].index].values
Приведенный выше код дает желаемый результат, но мне было интересно, можно ли сделать последнюю строку проще, например:
df.loc['a','p']=s1
, но при этом для среза столбца устанавливаются значения NaN.
Желаемый вывод:
p q
a x 2 0
y 1 0
b x 0 0
y 0 0
полученный вывод из df.loc ['a', 'p'] = s1:
p q
a x NaN 0
y NaN 0
b x 0.0 0
y 0.0 0
Мне кажется, это простой вопрос, но я нигде не смог найти ответ.