Slackのログを解析しています。ログファイルはjson形式で、pandasのDataframeとして読み込むとreactionsが次のような形になりました。
python3
1dfMa21 = pd.io.json.json_normalize(LecMa21) 2dfMa21reacs = dfMa21[['ts','reactions']]
リアクションの名前、リアクションした人のリスト、リアクション数が一つの辞書項目となって、これがあるメッセージに対するリアクションの種類の数だけリストとして入っています。
このリストを分解するために次のようなコードを書きました。
python3
1tmp = dfMa21reacs.reactions.apply(pd.Series).stack().reset_index(level=1, drop=True).rename('reactions') 2dfMa21reacs = dfMa21.loc[:,['ts']].join(tmp).reset_index(drop=True)
tsはタイムスタンプなのでtsが同じ項目は同じメッセージを表します。リストが分解され、同じメッセージに付いていたリアクションが一つずつ見えるようになりました。
問題はここからです。ここで例えば'name':'yakunitatta'となっているデータを取り出す操作を行いたいのですが、どうしたらいいかわかりません。辞書型データにkeyによってアクセスする方法を調べて以下のようにしたのですが、KeyError: 'name'になってしまいます。
python3
1dfMa21useful = dfMa21reacs[dfMa21reacs.reactions['name'] == 'yakunitatta']
pandasのデータ項目として辞書型データが入っているというケースが見つけられず、質問に至りました。正しい方法、あるいはもっと効率のいい方法があれば教えていただけると幸いです。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/28 02:08
2019/05/28 02:42
2019/05/31 08:19
2019/06/03 06:08