我不确定在这种情况下应该如何进行。
考虑像下面这样的df,当我做df.A.unique()
->给我一个像这样的数组[1, 2, 3, 4]
但是我也想要这个值的索引,例如numpy.unique()
df = pd.DataFrame({'A': [1,1,1,2,2,2,3,3,4], 'B':[9,8,7,6,5,4,3,2,1]})
df.A.unique()
>>> array([1, 2, 3, 4])
和
np.unique([1,1,1,2,2,2,3,3,4], return_inverse=True)
>>> (array([1, 2, 3, 4]), array([0, 0, 0, 1, 1, 1, 2, 2, 3]))
如何在熊猫中做到这一点?具有索引的唯一值。
答案 0 :(得分:2)
在pandas
中,我们有drop_duplicates
df.A.drop_duplicates()
Out[22]:
0 1
3 2
6 3
8 4
Name: A, dtype: int64
要匹配np.unique
输出factorize
pd.factorize(df.A)
Out[21]: (array([0, 0, 0, 1, 1, 1, 2, 2, 3]), Int64Index([1, 2, 3, 4], dtype='int64'))
答案 1 :(得分:2)
您也可以对.unique()
的索引使用.map()
的字典:
df.A.map({i:e for e,i in enumerate(df.A.unique())})
0 0
1 0
2 0
3 1
4 1
5 1
6 2
7 2
8 3