2017-03-06 50 views
1

是否有可能應用一個函數,它對熊貓中的連續行進行操作,並基於輸出聚合數據框?groupby正則表達式跨行和聚合熊貓

例子:

我想沿着這個數據幀的聯接的列應用正則表達式:

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 

現在我想列0用結合re.split()上加入文本數據:

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 

是否有這種類型的分組好大熊貓的功能呢?

回答

2

您的解決方案有效。唯一的故障是,你正在分配的正則表達式的輸出到,而不是[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 
+0

這在第二列失去分配。我認爲是爲了123'保持''如在第二列1'所需的一組功能。 – chase