私はいくつかのデータストレージの処理に取り組んでいます。ただし、前処理後のデータは次のようになります。例:
-1|news.cnet.com|Technology News - CNET News|-1|-1
-1|news.google.com|Google News|-1|-1
-1|www.bbc.co.uk|BBC News - Home|-1|-1
-1|www.cnn.com|CNN.com|-1|-1
-1|www.news.com.au|News.com.au|-1|-1
1|news.google.com|-1|2|5,156,672
2|www.cnn.com|-1|71|325,362
3|www.news.com.au|-1|569|74,584
4|www.bbc.co.uk|-1|49|442,302
5|news.cnet.com|-1|107|187,705
形式はのようなものINDEX|URL|TITLE|RANK|SLI
です。この値-1
は、列に特定の値がないことを示します。同じエントリが重複している可能性がありますURL
。それらをすべてマージすると、レコードが完成します。
これらのレコードを1つの完全なものにすばやく結合するための巧妙なトリックとヒントはありますか?すべての行を繰り返してループして、重複する行を見つけてマージしたくありません。
編集: 期待される出力は次のようになります:
1|news.google.com|Google News|2|5,156,672
2|www.cnn.com|CNN.com|71|325,362
3|www.news.com.au|News.com.au|569|74,584
4|www.bbc.co.uk|BBC News - Home|49|442,302
5|news.cnet.com|Technology News - CNET News|107|187,705
編集2:以下に示すように、
パンダを使用するroot
ことで、データ列をマージできます。
from pandas import *
frame = read_csv(r'data.txt', sep='|', names=['index', 'url', 'title', 'rank', 'sli'])
mask = frame['index'].map(lambda x: x > 0)
frame1 = frame[mask].set_index('url')
frame2 = frame[~mask].set_index('url')
frame1.title = frame2.title
frame1.set_index('index')
print frame1
ただし、サードパーティのライブラリを使用せずに簡単に回避する方法はありますか?