要獲得列中的唯一值,您可以使用unique
系列方法,該方法將返回唯一值(且速度很快!)的一個numpy數組。
df.long.unique()
# returns numpy array of unique values
然後,您可以使用numpy.append
:
np.append(df.long.unique(), df.short.unique())
注意:這只是一起追加了兩個獨特的結果,所以,它本身不是唯一的!
。
這裏有一個(簡單)例如:
import pandas as pd
import numpy as np
df = pd.DataFrame([[1, 2], [1, 4]], columns=['long','short'])
In [4]: df
Out[4]:
long short
0 1 2
1 1 4
In [5]: df.long.unique()
Out[5]: array([1])
In [6]: df.short.unique()
Out[6]: array([2, 4])
然後appending the resulting two arrays:
In [7]: np.append(df.long.unique(), df.short.unique())
Out[7]: array([1, 2, 4])
使用@ Zalazny7的set
是顯著快(因爲它運行在陣列上只有一次),有點upsettingly它甚至比np.unique
更快(將得到的陣列排序!)。
set絕對是這裏的一種方式,我很沮喪它比'numpy.unique'(哪種)更快! –
快速跟進。 Set是全部還是僅僅是df [0]和df [1]的唯一。我假設唯一的唯一。 對此的任何想法: 這將返回錯誤:具有多個元素的數組的真值是不明確的。使用a.any()或a.all()。 我該怎麼做? – user1911092
嘗試在[]中附上你的系列:cusips = pd.concat([df ['long'],df ['short']])) – Zelazny7