我有一个类似于下表的 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/