python データフレームの特定のカラムに特定の文字列リストが含まれるものを抽出する(部分一致、リスト検索)
ぜったいにもっと簡単にやり方とか関数があると確信していますが、
なかなか見つからなかったのでメモ。
データフレームの特定のカラムを一定の条件で検索したい。
その条件とは特定の文字列のリストがあって、それがふくまれるものを抽出するというもの。
ポイントは完全一致でなく、部分一致であること。
検索したい文字列が一つではなく複数あること。
こんな感じです。
■コード
import pandas as pd
import numpy as np
data = ["A1","B2","C3","C1"]
df = pd.DataFrame(data=data, columns=['label'])
#1と3を含むデータを抜きたい
#containsはlistを指定できない。
#isinは完全一致しかできない。。
#というわけで、こんなめんどくさいことをやる。。。
#検索したい文字列のリスト
stringlist = ["1","3"]
indexlist = []
#検索したい文字列を1件ずつループ。含まれていた場合のインデックスをリストに追加していく。
for i in range(len(stringlist)):
indexlist.extend(df.index[df['label'].str.contains(stringlist[i])].tolist())
#出力したリストをそのまま使うと重複あるので、重複排除して、ソート。
#unique使うと勝手にソートされてしまうが、今回は好都合。
label_list = np.unique(indexlist).tolist()
print("対象を含むデータの抽出")
print(df.reindex(index=label_list))
print("対象を含まないデータの抽出")
print(df.drop(index=label_list))
■出力結果
対象を含むデータの抽出 label 0 A1 2 C3 3 C1 対象を含まないデータの抽出 label 1 B2
1画面に複数formで上手くいかない
久しぶりにプログラミングして、躓いたので更新します。
1画面に複数formを設けて、選択したformを送信する画面を作ろうとしました。
イメージは以下の通り。
<form>
<input value="a">
<input type="submit">
<form>
<input value="b">
<input type="submit">
<form>
<input value="c">
<input type="submit">
bや、cのformを押しても、aがpostされてしまう現象にはまりました。
結果的には</form>を忘れていました。。。
正しくは以下ですね。。。
<form>
<input value="a">
<input type="submit">
</form>
<form>
<input value="b">
<input type="submit">
</form>
<form>
<input value="c">
<input type="submit">
</form>
htmlは苦手なので、構文ミスが結構多い。。。
<python>jupyter notebookでグラフに日本語タイトルを付ける
jypyter notebookでグラフを出力する際に使うライブラリが、Matplotlib。
とても便利なのですが、タイトル等に日本語を使う際にフォントの登録が必要となります。
詳細なやり方はググってほしいのですが、~.ttcとつくフォントをインストールして、Matplotlibのフォルダに格納してパス指定するやり方が散見されます。
このやり方でやって私が躓いたのは、
一回PCを再起動すること。
これでうまくいきました。
再起動って大事ですね。
jqueryを使ってみようとしたがmix contentエラー
jqueryを使って、自分のサイトにグロナビメニューを作ろうと思ったのですが、
読み込みエラー。。
javascriptの読み込みのURLがhttpsであるべきところが、httpになっていた。。
過去のサイトを見るとhttpでもうまくいっていたらしい。
まあ、こういうこともある。
GO言語でGAE上にグラフ表示その2
前回頑張って画像出力してhtmlに埋め込もうとしましたが、動的コンテンツは制御が難しい。
ふと、ていうか、javascriptでいいのでは?と思い調べるといくらでもライブラリが出てくる。
Google chartを選択したら瞬殺で、
グラフ表示ができました。
いやーなんていう遠回り。。
GO言語でGAEでグラフを作りたい!
GAE上にGO言語でWEBアプリケーションを作っています。
で、あるデータをもってきてグラフを生成したいなと思っています。
まずは画像ファイルを出力してそれを画面に表示する方式でいこうと思っています。
ライブラリはgonum.org/v1/plotを使用しようと考えました。
ローカルでは動くのに、GAE上ではどうしてもデプロイエラーとなる。
■エラー
../../google.go.gomod/gopath/pkg/mod/gonum.org/v1/plot@v0.10.0/vg/vgpdf/vgpdf.go:12:2: package embed is not in GOROOT
なんか、パッケージの中でパッケージが見つかっていないっぽい。
パッケージの中のソース見たら、確かに明らかにおかしい。
現時点でv0.10.0だったので怪しいなとおもい、
V0.9.0のバージョン下げてやったらうまくいきました!
何事も最新のものがいいってわけではないですね。