import pandas as pd import numpy as np df = pd.DataFrame({"a": [1,2,2,4,2,3], "b": [np.nan, np.nan, '2,3', 3, '3,5,1',2]})
上のデータフレームで列bで繰り返された回数が多い3つの数字をどうやって出せばいいんですか
3、2、1 か 3、2、5が答えになると思います
> 複数の仕事が入っている行もあります
どうやってそれを判定するんですか?見たところ、カンマ区切りのようですが。質問に明記してください。
ご指摘ありがとうございます、修正しました
アイテムが繰り返された回数は、np.nanが2回、 '2,3', 3, '3,5,1', 2 がそれぞれ1回なのでは。
'2,3'の3と、 3とを同列に扱うのは正しいのでしょうか?
質問者が求めている結果と、その根拠を示してください。
「答えになると思います」って書かれているという事は、質問者も回答を知らないのですか?
正解を知らないです。この場合どうしたらいいのかを知りたい。NaNを落とすべきだった。
質問の仕方がダメ過ぎて話にならないです。
数字を個別にカウントするとすれば、3が3回、2が2回、1と5は1回づつ、これで「繰り返された回数が多い3つの数字」が3,2,1または3,2,5になるロジックがあり得るのでしょうか。ロジックが不明な課題をプログラムで解くのは不可能です。まずは課題を正しく理解してください。質問はそれからです。
皆さんお疲れ様です。私の質問も完璧じゃなかったでしょうけど皆さんの想像力も;) これはあくまでも例でした、ここで個別に数えると多く出てくる順が3が3回、2が2回で1が1回 そして5も1回 ですね、見つめに多く出てくるのをはっきりわからない、それかその方法を私が知らない
たまたまこんな例になったんですが、トップ3の出し方をわかれば大量のデータにも当てはまれるんじゃないでしょうか。
解けました、split でb 列をカンマで区切ってから explode を使って value_counts と head(3) でうまく行ったと思います
解けたところで、それが正解かどうか判断できないのでは意味ないでしょ? 正解を知らないのだから。
あなたの回答
tips
プレビュー