從列中獲取唯一值

In [15]: df = pd.DataFrame({"A":[1,1,2,3,1,1],"B":[5,4,3,4,6,7]})

In [21]: df
Out[21]: 
   A  B
0  1  5
1  1  4
2  2  3
3  3  4
4  1  6
5  1  7

在 A 列和 B 列中獲取唯一值

In [22]: df["A"].unique()
Out[22]: array([1, 2, 3])

In [23]: df["B"].unique()
Out[23]: array([5, 4, 3, 6, 7])

要將列 A 中的唯一值作為列表獲取(請注意,unique() 可以以兩種略有不同的方式使用)

In [24]: pd.unique(df['A']).tolist()
Out[24]: [1, 2, 3]

這是一個更復雜的例子。假設我們想要從’B’列中找到唯一值,其中’A’等於 1。

首先,讓我們介紹一個副本,以便你可以看到它是如何工作的。讓我們用 4 替換'4’行中的 6,‘B’列:

In [24]: df.loc['4', 'B'] = 4    
Out[24]:    
   A  B
0  1  5
1  1  4
2  2  3
3  3  4
4  1  4
5  1  7

現在選擇資料:

In [25]: pd.unique(df[df['A'] == 1 ]['B']).tolist()
Out[25]: [5, 4, 7]

這可以通過首先考慮內部 DataFrame 來分解:

df['A'] == 1 

這會在 A 列中查詢等於 1 的值,並對它們應用 True 或 False。然後我們可以使用它來從 DataFrame 的列’B’中選擇值(外部 DataFrame 選擇)

為了比較,如果我們不使用 unique,這裡是列表。它檢索 B 列中 A 列為 1 的每個值

In [26]: df[df['A'] == 1]['B'].tolist()
Out[26]: [5, 4, 4, 7]