我正在尝试将集合存储在多索引数据框的某些列中:
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到列A只给出我想要的输出,但我也想在lambda函数中使用索引标签。应用之前的reset_index()可以解决它,但我更喜欢保留多索引。
有没有办法使用Dataframe.apply或允许访问lambda函数内的索引标签的类似函数来获取此输出?
In [3]:
s["A"].apply(lambda x: set([x]))
Out [3]:
first second
bar one {1}
two {3}
foo one {5}
two {7}
使用列表而不是集合会产生相同的行为。