pandasのapplyに引数を指定する
pandasのapplyを使うメモ pandas.DataFrame.apply
lambdaを使う
lambdaを使うと行数の節約になるので、単純な処理はこっちでやる
#カギカッコを追加してもう1列追加する
df['name'] = df['q'].apply(lambda x: "『" + x + "』")
applyにfunctionをつかう
自作したfunctionを指定することも可能。第一引数はapplyしたものになる
#applyからfunctionを呼び出す
df['urlencode'] = df['q'].apply(self.urlencode)
def urlencode(self, q):
return urllib.parse.quote(q)
applyで使ったfunctionに引数を渡す
applyに”引数=値”と書くと第2引数以降を渡すことが可能。
#applyからfunctionを呼び出し、引数を渡す
df['concat'] = df['q'].apply(self.concat, f="test")
def concat(self, q, f):
return q + f
コードと実行結果
import fire
import pandas as pd
import urllib.parse
class run(object):
def calc(self):
data = [
{'q':'月姫'},
{'q':'マツモットォ'},
{'q':'896人'},
{'q':'L452R'},
{'q':'ウブロ'},
{'q':'ライブ配信'},
{'q':'ノビタイ'},
{'q':'UNREAL'},
{'q':'完全無観客'},
{'q':'ラパンパラ'},
{'q':'サマスペ'},
{'q':'黎の軌跡'},
{'q':'サークル'},
{'q':'蔦屋書店'},
{'q':'湖池屋'},
{'q':'ゆり組'},
]
df = pd.DataFrame.from_dict(data)
#カギカッコを追加してもう1列追加する
df['name'] = df['q'].apply(lambda x: "『" + x + "』")
#applyからfunctionを呼び出す
df['urlencode'] = df['q'].apply(self.urlencode)
#applyからfunctionを呼び出し、引数を渡す
df['concat'] = df['q'].apply(self.concat, f="test")
print(df)
def urlencode(self, q):
return urllib.parse.quote(q)
def concat(self, q, f):
return q + f
if __name__ == '__main__':
fire.Fire(run)
q name urlencode concat
0 月姫 『月姫』 %E6%9C%88%E5%A7%AB 月姫test
1 マツモットォ 『マツモットォ』 %E3%83%9E%E3%83%84%E3%83%A2%E3%83%83%E3%83%88%... マツモットォtest
2 896人 『896人』 896%E4%BA%BA 896人test
3 L452R 『L452R』 L452R L452Rtest
4 ウブロ 『ウブロ』 %E3%82%A6%E3%83%96%E3%83%AD ウブロtest
5 ライブ配信 『ライブ配信』 %E3%83%A9%E3%82%A4%E3%83%96%E9%85%8D%E4%BF%A1 ライブ配信test
6 ノビタイ 『ノビタイ』 %E3%83%8E%E3%83%93%E3%82%BF%E3%82%A4 ノビタイtest
7 UNREAL 『UNREAL』 UNREAL UNREALtest
8 完全無観客 『完全無観客』 %E5%AE%8C%E5%85%A8%E7%84%A1%E8%A6%B3%E5%AE%A2 完全無観客test
9 ラパンパラ 『ラパンパラ』 %E3%83%A9%E3%83%91%E3%83%B3%E3%83%91%E3%83%A9 ラパンパラtest
10 サマスペ 『サマスペ』 %E3%82%B5%E3%83%9E%E3%82%B9%E3%83%9A サマスペtest
11 黎の軌跡 『黎の軌跡』 %E9%BB%8E%E3%81%AE%E8%BB%8C%E8%B7%A1 黎の軌跡test
12 サークル 『サークル』 %E3%82%B5%E3%83%BC%E3%82%AF%E3%83%AB サークルtest
13 蔦屋書店 『蔦屋書店』 %E8%94%A6%E5%B1%8B%E6%9B%B8%E5%BA%97 蔦屋書店test
14 湖池屋 『湖池屋』 %E6%B9%96%E6%B1%A0%E5%B1%8B 湖池屋test
15 ゆり組 『ゆり組』 %E3%82%86%E3%82%8A%E7%B5%84 ゆり組test
行列の指定オプションとかもある。 applyでfunction呼び出しのときの引数の渡し方をよく忘れるのでいかんな〜とよく思う。