Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
提取字符串列中的所有唯一模式(Python、DF)_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

提取字符串列中的所有唯一模式(Python、DF)

提取字符串列中的所有唯一模式(Python、DF),python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我正在从事一个制造业项目,其中每个订购项目的所有零件都有一个唯一的6位代码;有68000条记录。所有零件代码都放在一列中,放在一个字符串中,每个父字符串具有不同的长度: 我想知道是否有更简单的方法来分离这些字符串,将每个唯一的代码转换为一列,然后对父字符串中的列1(如果存在)和列0(如果不存在)进行编码 AAX04X ABXN6X A5DB1X... 1 1 1 1 0 1 0 1 0

我正在从事一个制造业项目,其中每个订购项目的所有零件都有一个唯一的6位代码;有68000条记录。所有零件代码都放在一列中,放在一个字符串中,每个父字符串具有不同的长度:

我想知道是否有更简单的方法来分离这些字符串,将每个唯一的代码转换为一列,然后对父字符串中的列1(如果存在)和列0(如果不存在)进行编码

AAX04X  ABXN6X  A5DB1X...
  1        1       1
  1        0       1
  0        1       0
        ...
以下是我到目前为止的情况,但运行起来需要很长时间:

line = df.column[0]
split = [line[i:i+6] for i in range(0,len(line),6)]

for r in range(0,len(df.column)):
    new_line = df.column[r]
    new_split = [new_line[i:i+6] for i in range(0,len(new_line),6)]

    for code in new_split:
        if code not in split:
            split.append(code)

您可以使用
wrap
split
将字符串拆分为6个字符的块,然后使用
get\u dummies
进行一次热编码:

# generate some test data
df = pd.DataFrame({
    's': [''.join(x) for x in np.random.choice(list('AB'), (100, 24))]
})

# split into 6-character chunks and one-hot encode them
df['s'].str.wrap(6).str.get_dummies('\n')
输出:

    AAAAAA  AAAAAB  AAAABA  AAAABB  AAABAA  AAABAB  AAABBA  AAABBB  AABAAA  \
0        0       0       0       0       0       1       0       0       0   
1        0       0       0       0       0       0       0       0       0   
2        0       0       1       0       0       0       1       0       0   
3        0       0       0       0       0       0       0       0       1   
4        0       0       0       0       0       1       0       0       0   
..     ...     ...     ...     ...     ...     ...     ...     ...     ...   
95       0       0       0       0       0       0       1       0       0   
96       0       0       0       0       0       0       1       0       0   
97       0       0       0       0       0       0       0       0       0   
98       0       0       0       0       1       0       0       0       0   
99       0       0       0       0       0       0       0       0       0 

非常感谢。我现在正在执行你的建议;然而,由于有68000条记录,它需要相当长的时间才能运行。我会更新它一次completes@AnttonHammarskjold有趣。这些绳子有多长?我已经测试了100k字符串,每个字符串有24个字符,在我的笔记本电脑上运行大约30秒,效果很好,谢谢。每个字符串都是4500-5000个字符。