如何从字符串列表中派生二进制数组

时间:2018-02-05 09:05:49

标签: python list pandas numpy

最好将此问题描述为一个示例(与大多数情况一样)。

我有以下示例列表:

test = ['a','a','b','b','c','b']

我想获得一个带有输入列表长度的pandas数组列表(在本例中为6),其中每个数组的长度都是' test'在这种情况下3(' a',' b'' c')它包含零和单个1对应于唯一值的值(这里的顺序显然很重要,所以如果对唯一值进行排序会更好,或者更好的顺序将是第一次出现的值,在示例中,两个顺序重合)输入列表的每个元素都包含。

对于上面的示例,输出将是一个如下所示的数组列表:

(1,0,0)
(1,0,0)
(0,1,0)
(0,1,0)
(0,0,1)
(0,1,0)

附加示例:

test = ['a', 'g', 'b']

(1,0,0)
(0,1,0)
(0,0,1)

如果是任意的话,我还需要输出唯一值对应的顺序。最好是在列表中首次遇到唯一元素。在这种情况下,它是''''' b'。

谢谢

1 个答案:

答案 0 :(得分:3)

Pandas有一个内置函数[2018-02-05T09:04:14.675+0000] [glassfish 4.1] [INFO] [] [] [tid: _ThreadID=26 _ThreadName=Thread-8] [timeMillis: 1517821454675] [levelValue: 800] [[ ******************]] [2018-02-05T09:04:14.675+0000] [glassfish 4.1] [INFO] [] [] [tid: _ThreadID=26 _ThreadName=Thread-8] [timeMillis: 1517821454675] [levelValue: 800] [[ file:/home/ubuntu/glassfish4/glassfish/domains/domain1/applications/BookStore/WEB-INF/lib/jackson-databind-2.6.7.1.jar]] [2018-02-05T09:04:14.675+0000] [glassfish 4.1] [INFO] [] [] [tid: _ThreadID=26 _ThreadName=Thread-8] [timeMillis: 1517821454675] [levelValue: 800] [[ file:/home/ubuntu/glassfish4/glassfish/domains/domain1/lib/aws-java-sdk-1.11.268.jar]] [2018-02-05T09:04:14.675+0000] [glassfish 4.1] [INFO] [] [] [tid: _ThreadID=26 _ThreadName=Thread-8] [timeMillis: 1517821454675] [levelValue: 800] [[ file:/home/ubuntu/glassfish4/glassfish/domains/domain1/lib/aws-java-sdk-1.11.268.jar]] [2018-02-05T09:04:14.678+0000] [glassfish 4.1] [INFO] [] [] [tid: _ThreadID=26 _ThreadName=Thread-8] [timeMillis: 1517821454678] [levelValue: 800] [[ DEBUG: setDebug: JavaMail version 1.5.2]] ,可以满足您的目的:

get_dummies

如果由于某种原因,您确实需要>>> test = ['a','a','b','b','c','b'] >>> import pandas as pd >>> pd.get_dummies(test) a b c 0 1 0 0 1 1 0 0 2 0 1 0 3 0 1 0 4 0 0 1 5 0 1 0 个对象的列表,您可以随时:

numpy.ndarray