Pandas apply

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呼び出しのときの引数の渡し方をよく忘れるのでいかんな〜とよく思う。

connvoi's Picture

About connvoi

肉とビールと料理と写真とゲーム たまに技術 python / Solr / PHP / ansible

アマゾンセール情報サイト アマセール管理人

Jp, Tokyo https://connvoi.com