2017-11-07 3 views
0

都市名と所属する状態を持つpandasデータフレームがあります。私は各州の都市名比較の可能な組み合わせをすべて取得しようとしています。パンダ列が属しているグループに基づくすべての順列と組み合わせ

例のデータフレーム:

City State 
---------- 

LosA Cali 
SanJ Cali 
SanF Cali 
Char NC 
Rale NC 

予想される回答:

City1 City2 State 
---------- 
LosA SanJ Cali 
LosA SanF Cali 
SanJ SanF Cali 
Char Rale NC 

私は、全体の組み合わせを与えるitertoolsからの組み合わせを使用しているが、同様の状態に基づいて達成するための方法は何ですか?

答えて

1

groupby + itertools.combinationsの組み合わせを使用します。

from itertools import combinations 

g = df.groupby('State').apply(lambda x: 
     pd.Series(list(combinations(x.City, 2)))) 

df = pd.DataFrame(g.apply(list).tolist(), columns=['City1', 'City2']) 
df['State'] = g.index.get_level_values(0) 

df 

    City1 City2 State 
0 LosA SanJ Cali 
1 LosA SanF Cali 
2 SanJ SanF Cali 
3 Char Rale NC 
+0

はありがとうございました、魔法のように動作します – msksantosh

関連する問題