Pandas DataFrames中的不同组合值

时间:2015-09-25 15:33:06

标签: python pandas

是否有一种简单的方法可以在数据框中提取不同的值组合?我已经将pd.Series.unique()用于单列,但是多列呢?

示例数据:

df = pd.DataFrame(data=[[1, 'a'], [2, 'a'], [3, 'b'], [3, 'b'], [1, 'b'], [1, 'b']], 
                  columns=['number', 'letter'])

Expected output:
(1, a)
(2, a)
(3, b)
(1, b)

理想情况下,我喜欢具有不同值的元组的单独Series对象。

2 个答案:

答案 0 :(得分:5)

IIUC,然后您可以将索引设置为这些列,然后在索引上调用unique

In [165]:
idx = df.set_index(['number','letter']).index
idx.unique()

Out[165]:
array([(1, 'a'), (2, 'a'), (3, 'b'), (1, 'b')], dtype=object)

答案 1 :(得分:2)

您可以压缩列并创建一个集:

>>> set(zip(df.number, df.letter))
{(1, 'a'), (1, 'b'), (2, 'a'), (3, 'b')}