5

注:この質問は実際にはSplit pandas dataframe string entry to separate rowsの複製ですが、ここで提供される回答はより一般的で有益であるため、すべての点を考慮して、スレッドを削除しないことを選択しました


次の形式の「データセット」があります。

     id | value | ...
--------|-------|------
      a | 156   | ...
    b,c | 457   | ...
e,g,f,h | 346   | ...
    ... | ...   | ...

そして、各IDのすべての値を複製して正規化したいと思います:

     id | value | ...
--------|-------|------
      a | 156   | ...
      b | 457   | ...
      c | 457   | ...
      e | 346   | ...
      g | 346   | ...
      f | 346   | ...
      h | 346   | ...
    ... | ...   | ...

私がやっていることは、グループごとに作成するpandas使用の分割適用結合原則を適用することです.groupbytuple(groupby value, pd.DataFrame())

行のIDを単純にカウントするグループ化する列を作成しました:

df['count_ids'] = df['id'].str.split(',').apply(lambda x: len(x))

     id | value | count_ids
--------|-------|------
      a | 156   | 1
    b,c | 457   | 2
e,g,f,h | 346   | 4
    ... | ...   | ...

行を複製する方法は次のとおりです。

pd.DataFrame().append([group]*count_ids)

私はゆっくりと進歩していますが、それは本当に複雑です。この種の問題について共有できるベスト プラクティスや推奨事項をいただければ幸いです。

4

1 に答える 1