2017-03-06 33 views
1

pandasに連結された行に作用する関数を適用して、出力に基づいてデータフレームを集計できますか?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を使用して結合したいと思います

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() 

はこれが2番目の列に割り当てを失う

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

あなたを与えるだろう。私は第2列に '123'を' 1'として維持するために必要なグループ機能があると思います。 – chase