python

时间:2016-11-21 22:52:27

标签: 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 这是正确的:特里迈克,杰西卡迈克,阿曼达艾伯特

问题如何使用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

来做

感谢。

2 个答案:

答案 0 :(得分:2)

如果你真的不关心'Terry mike'是否获得'001',你可以使用geom_bar dtype:

graph<-ggplot(df, aes(x=DATE, y= Revenue)) + 
       geom_bar(aes( fill = DATE), stat = "identity") 
ggplotly(graph)

如果你想要3位数的二进制文件:

category

答案 1 :(得分:1)

factors, idx = pd.factorize(df.name)
width = int(np.log2(factors.max()) // 1 + 1)

pd.Series(factors, df.index).apply(np.binary_repr, width=width)

0    00
1    01
2    10
3    00
dtype: object