熊猫-从列中获取唯一值以及行索引的出现位置

shi*_*shu 6 python pandas

我的数据框有一个字符串列,其中可以包含长字符串。我想获得一个唯一字符串的列表,以及每个包含行索引的唯一字符串的列表。

我可以想到两种方法。

  1. 首先使用获取唯一列表.unique(),然后遍历数据框以建立索引列表,其中每个唯一值都将显示
  2. 使用.groupBy()创建组,并得到行索引名单每组

但是我不确定哪一种效率更高(或者是否还有其他方法可以更有效地做到这一点)。我考虑效率的原因是,我要唯一化的字段和groupBy是一个可能包含长字符串的字符串字段!

谢谢!

Max*_*axU 5

演示:

In [16]: df
Out[16]:
    col
0  aaaa
1  bbbb
2  aaaa
3  aaaa
4  bbbb
5  cccc

In [17]: df.groupby('col').groups
Out[17]:
{'aaaa': Int64Index([0, 2, 3], dtype='int64'),
 'bbbb': Int64Index([1, 4], dtype='int64'),
 'cccc': Int64Index([5], dtype='int64')}
Run Code Online (Sandbox Code Playgroud)

或作为DataFrame:

In [31]: pd.DataFrame([[k,v.values]
                        for k,v in df.groupby('col').groups.items()], 
                      columns=['col','indices'])
Out[31]:
    col    indices
0  aaaa  [0, 2, 3]
1  bbbb     [1, 4]
2  cccc        [5]
Run Code Online (Sandbox Code Playgroud)