要获得列中的唯一值,您可以使用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