Я пытаюсь сохранить наборы в некоторых столбцах мультииндексного фрейма данных:
In [1]:
arrays = [['bar', 'bar', 'foo', 'foo'], ['one', 'two', 'one', 'two']]
index = pd.MultiIndex.from_tuples(list(zip(*arrays)),
names=['first', 'second'])
s = pd.DataFrame(np.arange(1, 9).reshape(4,2),
index=index, columns=["A", "B"])
Out [1]:
A B
first second
bar one 1 2
two 3 4
foo one 5 6
two 7 8
Пытаясь использовать apply, чтобы получить наборы для одного из столбцов, я получаю фрейм данных с дублированиемзначения для каждого столбца:
In [2]:
s.apply(lambda x: set([x["A"]]), axis=1)
Out[2]:
A B
first second
bar one {1} {1}
two {3} {3}
foo one {5} {5}
two {7} {7}
Ожидаемый вывод:
Использование команды appply to column A дает только желаемый результат, но я также хотел бы использовать метки индекса внутри лямбда-функции,Метод reset_index () до применения может решить эту проблему, но я бы предпочел сохранить мультииндекс.
Есть ли способ получить этот вывод, используя Dataframe.apply или аналогичную функцию, которая позволяет получить доступ к меткам индекса внутри лямбда-функции?
In [3]:
s["A"].apply(lambda x: set([x]))
Out [3]:
first second
bar one {1}
two {3}
foo one {5}
two {7}
Использование списков вместо наборов приводит к тому же поведению.