перезаписать фрагмент мультииндексного фрейма данных сериями - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть мультииндексный фрейм данных, и я хочу установить срез одного из его столбцов, равный серии, упорядоченный (отсортированный) в соответствии с индексом совпадения среза столбца и серии.Внутренний индекс столбца и индекс серии идентичны, за исключением их упорядочения (сортировки).(см. пример ниже)

Я могу сделать это, сначала отсортировав индекс серии по индексу столбца, а затем используя 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

Мне кажется, это простой вопрос, но я нигде не смог найти ответ.

1 Ответ

0 голосов
/ 24 сентября 2019

Вы пробовали что-то подобное?

df.loc['a']['p'] = s1

Результирующий df здесь

     p  q
a x  2  0
  y  1  0
b x  0  0
  y  0  0
...