python - python中唯一的二进制字符串

标签 python python-2.7 python-3.x pandas

我有一个类似于下表的 xlsx 文件:

name                 place               link 
terry mike           12<longbeach>       http://www.google.com/xyz
jessica mike         12<longbeach>       http://www.google.com/abc
amanda albert        189<washington>     http://www.amazone.com/cali
terry mike           189<longbeach>      http://www.google.com/nnn

我在 python 中使用 Pandas 作为数据框导入,并且能够使用以下方法计算每一列的唯一字符串:

len(df.Name.unique())

所以对于名字我得到了 3 这是正确的:terry mike,jessica mike,amanda albert

问题如何使用 pandas dataframe 将这 3 个 cloumns 转换为二进制唯一字符串,以便 Name 列输出如下所示:

Name    place   link
001     001     001
010     001     010
011     010     011
001     011     100

这样每个单元格都是唯一的,我通过 len(df.Name.unique()) 知道每一列有多少个不同的字符串,在这种情况下,将其命名为 3 用于放置它的 3 并且链接是 4

有没有一种简单的方法可以用 pandas 做到这一点

谢谢。

最佳答案

如果你真的不关心'Terry mike'是否得到'001',你可以使用category数据类型:

df.apply(lambda x: x.astype('category').cat.codes)

   name  place  link 
0     2      0      3
1     1      0      1
2     0      2      0
3     2      1      2

如果你想要 3 位二进制:

df.apply(lambda x: x.astype('category').cat.codes).applymap('{0:03b}'.format)

  name place link 
0  010   000   011
1  001   000   001
2  000   010   000
3  010   001   010

关于python - python中唯一的二进制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40730864/

相关文章:

python - 可以在 shell 中逐行运行脚本,但完整的脚本不返回任何内容

python - 在 Python 中跳过多行

Python 套接字监听

python - 读取具有指定换行符的文件

python - 必须以实例作为第一个参数调用未绑定(bind)方法 - python

python - 什么决定了调试器的运行时性能

python - Docker 容器正在运行。但页面在本地主机 URL 中不起作用(页面未发送任何数据)

python - 使用 bash for 循环从位于子目录中的单独文件运行 Python doctest

python - 如何在使用 python 的 HTTPServer 时设置 DocumentRoot?

python - Moodle插件创建