如何跨列中的字符串计数字符

2024-10-06 16:16:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个具有以下结构的数据帧:

prod_sec     
A    
AA    
AAAAAAAAAAB    
AAAABCCCAA    
AACC   
ABCCCBAC

df = pd.DataFrame({'prod_sec': ['A','AA','AAAAAAAAAAB','AAAABCCCAA','AACC','ABCCCBAC']})

每个字符串都是由字母组成的序列(本例中为a到C)。
我想为每个字母创建一个列表,统计整个熊猫栏中每个位置出现的次数。

例如,在第一个字符串中,A仅在第一个位置/索引中,而不在其他位置
在第二个字符串中,A位于前两个位置,而不在其他位置
在第三个字符串中,A具有直到最后一个字符串的所有位置。等等
我要按位置列出该列的总计数
以下是一个示例:

A            ->     [1,0,0,0,0,0,0,0,0,0,0]    
AA                  [1,1,0,0,0,0,0,0,0,0,0]
AAAAAAAAAAB   ->    [1,1,1,1,1,1,1,1,1,1,0] 
AAAABCCCAA          [1,1,1,1,0,0,0,0,0,0,1]
AACC                [1,1,0,0,0,0,0,0,0,0,0]
ABCCCBAC    ->      [1,0,0,0,0,0,1,0,0,0,0]

所以对于A,我想要一个类似以下的输出。。。[6,4,2,2,1,1,2,1,1,1,0]
最后,我试图得到一个矩阵,每个字符有一行

                    [6,4,2,2,1,1,2,1,1,1,0]
                    [0,1,0,0,1,1,0,0,0,0,1]
                    [0,0,1,1,0,1,2,0,0,0,0]

Tags: 数据字符串dataframedf字母序列prodsec
1条回答
网友
1楼 · 发布于 2024-10-06 16:16:08

以下几点应该行得通。您可以根据具体需要(numpy数组、数据帧、字典等)调整结果。如果你需要更多的帮助,告诉我

max_length=max([len(i) for i in df.prod_sec])

d={'A':[0]*max_length, 'B':[0]*max_length, 'C':[0]*max_length}

for i in df.prod_sec:
    for k in range(len(i)):
        d[i[k]][k]+=1

result=pd.DataFrame.from_dict(d, orient='index')

相关问题 更多 >