63217


pandasのデータフレームdfで、文字列のはいった列mojiの長さが3以上のものを残したいと考えています。  
mojilen=len(moji)で新しい列を作れば行けると思いますが、新しい列を作らずに処理する方法はあるのでしょうか。

`df.query("len(df.moji)>2")`は駄目でした。

よろしくおねがいします。


CC BY-SA 4.0
2020-02-20T16:53:17.560
63216
2020-05-21T09:03:40.320
12457
question
python pandas
pandasで文字の長さによる抽出


たとえばマスクを作って処理することができます。

[code]

    >>> import pandas as pd
    >>> df = pd.DataFrame(data={'moji': ["aaa", "b", "cccc", "d", "eeeee", "fffffffff", "gg", "hhhhhh", "iiiii"]})
    >>> mask = df['moji'].str.len() >= 3
    >>> df[mask]
            moji
    0        aaa
    2       cccc
    4      eeeee
    5  fffffffff
    7     hhhhhh
    8      iiiii
    
[/code]

1行にも書けます。

[code]

    >>> df[lambda df: df['moji'].str.len() >= 3]
            moji
    0        aaa
    2       cccc
    4      eeeee
    5  fffffffff
    7     hhhhhh
    8      iiiii
    
[/code]

このドキュメントが参考になります：[Indexing and selecting
data](https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html)


CC BY-SA 4.0
2020-02-20T23:51:16.963
63217
2020-02-20T23:51:16.963
19110
63216
answer