Masa-Kawa
@Masa-Kawa (Masa Kawaguchi)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Pandasのデータフレームで列ごとの集合演算をおこないたい。

解決したいこと

pandasのデータフレームに2列の抽出された単語リストがあります。
これを元に集合に変換
さらに、積集合や差集合などの演算を行って新しい列を作りたい

やりたいことのイメージです

元のデータフレーム

Index A B
0 ["い","ろ","は"] ["い","ろ","は"]
1 ["に","ほ"] ["に","ほ","へ"]
2 ["へ","と","ち"] ["と","と","ち"]
3 ["り","ぬ","り"] ["を","る"]

変換後のデータフレーム

Index A B 積集合 差集合(左)
0 {"い","ろ","は"} {"い","ろ","は"} {"い","ろ","は"} {}
1 {"に","ほ","と","ち"} {"に","ほ","へ"} {"に","ほ"} {"と","ち"}
2 {"へ","と","ち"} {"と","ち"} {"と","ち"} {"へ"}
3 {"り","ぬ"} {"を","る"} {} {"り"}

自分で試したこと

set()関数を使って、一つのリストを集合にすることはできるが、データフレームの列ごとができない。
apply()等を試してみたがうまく行きませんでした。
イテレーションで地道に変換する方法もあるかと思いますが、よい解決策はないでしょうか

0

3Answer

自己レスです。まだ解決していませんが経過報告を。

まず、.apply(set)は正しい方法のようです。これで集合化できるはず。
ところが、それ以前にすべてのデータがリストになっていない。.apply(list)もできないことがわかりました。

ここで問題になってくるのは、データの中にset化,もしくはlist化できないものを抽出したり、それを変更したりするにはどうしたらよいかということです。

0Like

Comments

  1. @Masa-Kawa

    Questioner

    うーむ。リストを含んだCSVファイルを読み込むと文字列として扱われる。
    read_csvを使えば、良いらしいがよくわからない
  2. @Masa-Kawa

    Questioner

    pd.to_pickle, pd.read_pickleという方法を使えばできるらしい。
    しかし、文字列となっているリストをリストにしたい!というときにはどうしたらいいのだろうか

Your answer might help someone💌