Skip to main content
 首页 » 编程设计

python之groupby 正则表达式跨行并在 pandas 中聚合

2024年10月01日4hnrainll

是否可以应用一个函数来对 pandas 中的串联行进行操作,并根据输出聚合数据帧?

例子:

我想沿着这个数据框的连接列应用正则表达式:

a = pd.DataFrame([['a', 0],['b',0],['c',0], [' ', 0], ['1', 1], ['2', 1], ['3',1], [' ', 0], ['r',0], ['.', 0], [' ', 0], ['a',0]]) 

输出:

    0  1 
0   a  0 
1   b  0 
2   c  0 
3      0 
4   1  1 
5   2  1 
6   3  1 
7      0 
8   r  0 
9   .  0 
10     0 
11  a  0 

现在我想在连接的文本数据上使用 re.split() 合并第 0 列:

a = pd.DataFrame(re.split(r'([\s\.])',''.join(a[0]))) 

这给出了这个:

     0 
0  abc 
1      
2  123 
3      
4    r 
5    . 
6      
7      
8    a 

但是,它会丢失其他列。

如何在执行此操作时维护 DataFrame?

这里的其他列可以作为连接字符串中最常见的元素的平均值或只是最常见的元素。为了提供最终输出:

     0  1 
0  abc  0 
1       0 
2  123  1 
3       0 
4    r  0 
5    .  0 
6       0 
7       0 
8    a  0 

有没有适合这种分组的 pandas 函数?

请您参考如下方法:

您的解决方案有效。唯一的问题是您将正则表达式的输出分配给 a 而不是 a[0]

a[0] = pd.DataFrame(re.split(r'([\s\.])',''.join(a[0]))) 
a.dropna()  

给你

    0   1 
0   abc 0 
1       0 
2   123 0 
3       0 
4   r   1 
5   .   1 
6       1 
7       0 
8   a   0