2017-07-13 4 views
0

私はレコードの類似性の結果を持つパンダのデータフレームを持っています。たとえば、rowid 123はrowid 512と似ており、rowid 123は681に似ています。技術的には、3つの行はすべて類似しています。同様の行をグループ化するにはどうすればよいですか?私のデータを組み合わせてい組み合わせのリストを持つpandasデータフレームをグループ化するにはどうすればいいですか?

注 - networkxを使用することができます例(123512)及び(512123)

import pandas as pd 
df = pd.DataFrame({'A': [123,123,512,412,412,536], 'B': [512,681,123,536,919,412]}) 
df 

A B 
123 512 
123 681 
512 123 
412 536 
412 919 
536 412 

予想される出力

Group1 123 
Group1 512 
Group1 681 
Group2 412 
Group2 536 
Group2 919 
+0

これまでに何を試しましたか? –

答えて

3

は、接続されているグループを決定します。

In [750]: import networkx as nx 

In [751]: G = nx.from_pandas_dataframe(df, 'A', 'B') # Create the graph 

In [752]: Gcc = nx.connected_components(G) 

In [753]: pd.DataFrame([{'id': i, 'group': 'group%s' % (g+1)} 
    ...:    for g, ids in enumerate(Gcc) for i in ids]) 
Out[753]: 
    group id 
0 group1 512 
1 group1 681 
2 group1 123 
3 group2 536 
4 group2 412 
5 group2 919 
関連する問題