69290


Python3.7です。

[code]

    df['cnt'] = df.x1.count('＄')
    
[/code]

として、x1列（文字列）に出てくる＄の回数を数えた列を作ろうと考えていますが、

[code]

    KeyError: 'Requested level (＄) does not match index name (None)'
    
[/code]

とエラーが出てしまいます。  
どう対処すればよろしいでしょうか。

**追記**  
`df.x1.str.count('＄')`で

[code]

    __main__:1: SettingWithCopyWarning:
    A value is trying to be set on a copy of a slice from a DataFrame.
    Try using .loc[row_indexer,col_indexer] = value instead
    See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
    
[/code]

が出ましたが、無事出力できました。  
<http://anton0825.hatenablog.com/entry/2017/02/01/000000>  
によるとdf['age'][5]のように[]を二段にしてアクセスすると発生するとのことです。  
df.x1.str.count('＄')  
が原因のような気がしますが、どうなのでしょうか。


CC BY-SA 4.0
2020-08-05T17:11:23.377
69283
2020-08-06T13:36:11.057
2020-08-06T13:36:11.057
12457
12457
question
python pandas
Pandasで文字列に対して関数を適用したい


手元の環境(Python 3.6.1, pandas 0.24.2)では下記のコードで動作しました。  
x1列のデータをstrにしてから[count](https://pandas.pydata.org/pandas-
docs/stable/reference/api/pandas.Series.str.count.html)を呼び出しています。

[code]

    import pandas as pd
    
    df = pd.DataFrame(['＄', '＄＄', '$', '＄ド＄ル＄'], columns=['x1'])
    print(df.x1.str.count('＄'))
    # print(df.x1.count('＄'))  # KeyError: 'Level ＄ must be same as name (None)'
    
[/code]

質問文のコードを実行するとエラーが発生しますが、エラー内容が異なっています。  
質問文と同様のエラーが出た時の[本家SOの回答](https://stackoverflow.com/a/62939030)ではpandas関連モジュールを更新することで解決すると書かれています。


CC BY-SA 4.0
2020-08-06T00:56:56.257
69290
2020-08-06T00:56:56.257
9820
69283
answer