2017-10-12 9 views
0

と行の値を置き換える:Iは、以下のようにデータフレームを有するパンダデータフレームにおける最頻値

|   types | freq |  TypeList 
0 | Q11424 (item) | 29 | Q11424 (item),Q571 (item) 
1 |  Q571 (item) | 9 | Q11424 (item),Q571 (item) 
0 | Q11012 (item) | 6 | Q11012 (item) 
0 | Q4830453 (item) | 39 | Q4830453 (item) 
0 | Q7725634 (item) | 2 | Q7725634 (item),Q571 (item) 
1 |  Q571 (item) | 9 | Q7725634 (item),Q571 (item) 
0 | Q785479 (item) | 1 | Q785479 (item),Q1344 (item) 
1 |  Q1344 (item) | 1 | Q785479 (item),Q1344 (item) 

列「タイプ」実際「タイプリスト」の平坦化カラムです。また、freq列は、列型の各値の頻度を示します。これらの周波数は、データフレーム全体からのものです。ここでは、これらの行をいくつか追加しています。例えば。 Q571はタイプ列で9回発生し、したがってfreq = 9です。 TypeList列は、各レコードのタイプのリストです。私はタイプリスト列は複数のタイプが含まれます場合は、最も頻度の高いタイプを持つことになり、新しい列スーパータイプを追加したいです。例えば。最初の行で

|   types | freq |  TypeList     |SuperType 
0 | Q11424 (item) | 29 | Q11424 (item),Q571 (item) | Q11424 
1 |  Q571 (item) | 9 | Q11424 (item),Q571 (item) | Q11424 
0 | Q11012 (item) | 6 | Q11012 (item)    | Q11012 
0 | Q4830453 (item) | 39 | Q4830453 (item)    | Q4830453 
0 | Q7725634 (item) | 2 | Q7725634 (item),Q571 (item) | Q571 
1 |  Q571 (item) | 9 | Q7725634 (item),Q571 (item) | Q571 
0 | Q785479 (item) | 1 | Q785479 (item),Q1344 (item) | Q785479 
1 |  Q1344 (item) | 1 | Q785479 (item),Q1344 (item) | Q785479 

、タイプリスト列が値 "Q11424(アイテム)、Q571(アイテム)" を有している:私は、その結果、次たいです。だから私は、これらの両方のタイプ、29と9の頻度を確認したいと思います。その行に対してスーパータイプの列に最も頻繁にタイプを割り当てる(この場合はQ11424)。使用することにより

答えて

1

transform

df['SuperType']=df.sort_values('freq').groupby('TypeList')['types'].transform('last') 
df['SuperType']=df.SuperType.str[:-6] 
df.sort_index() 
Out[1124]: 
      types freq      TypeList SuperType 
0 Q11424 (item) 29 Q11424 (item),Q571 (item) Q11424 
1  Q571 (item)  9 Q11424 (item),Q571 (item) Q11424 
2 Q11012 (item)  6    Q11012 (item) Q11012 
3 Q4830453 (item) 39    Q4830453 (item) Q4830453 
4 Q7725634 (item)  2 Q7725634 (item),Q571 (item)  Q571 
5  Q571 (item)  9 Q7725634 (item),Q571 (item)  Q571 
6 Q785479 (item)  1 Q785479 (item),Q1344 (item)  Q1344 
7  Q1344 (item)  1 Q785479 (item),Q1344 (item)  Q1344 

編集:編集した

df=df.sort_values('freq') 
df['SuperType']=df.groupby('TypeList')['types'].transform('last').values 
df['SuperType']=df.SuperType.str[:-6] 
+0

@ScottBoston ... – Wen

+0

私は取得しています "とValueErrorを:重複軸からインデックスを再作成することはできません" 最初の行を実行した後に例外。例外は、値をdf ['superType']に代入しようとする場合にのみ発生します。それ以外の場合は動作します。 –

+0

@NilakshiNaphade私の編集を試してください – Wen

関連する問題