Pandas DataFrames中的不同组合值

AZh*_*hao 5 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)
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想要一个单独的具有不同值的元组的Series对象.

Ale*_*der 7

您可以压缩列并创建一组:

>>> set(zip(df.number, df.letter))
{(1, 'a'), (1, 'b'), (2, 'a'), (3, 'b')}
Run Code Online (Sandbox Code Playgroud)


EdC*_*ica 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)
Run Code Online (Sandbox Code Playgroud)