python – Pandas – 从列中获取唯一值以及它们出现的行索引列表

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

我可以想到两种方法.

>首先使用.unique()获取唯一列表,然后遍历数据帧以构建索引列表,其中每个唯一值都显示出来
>使用.groupBy()创建组并获取每个组中的行索引列表

但我不太确定哪一个更有效(或者是否还有其他方法可以更有效地做到这一点).我考虑效率的原因是我想要统一的字段和groupBy是一个字符串字段,可能有很长的字符串!

谢谢!

解决方法:

演示:

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')}

或者作为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]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐