私はタイタニックデータセットを調べており、同様の名前の列を作成したいと考えています。たとえば、「チャールズ」を含む名前は「ch」と表示されますが、後でそれらを使用していくつかのグループを実行したいとします。pandasデータフレームに新しい列を作成するstr.contains
titanic['namest']=titanic['Name'].apply(cont,axis=1)
エラー:'str' object has no attribute 'str'
私はタイタニックデータセットを調べており、同様の名前の列を作成したいと考えています。たとえば、「チャールズ」を含む名前は「ch」と表示されますが、後でそれらを使用していくつかのグループを実行したいとします。pandasデータフレームに新しい列を作成するstr.contains
titanic['namest']=titanic['Name'].apply(cont,axis=1)
エラー:'str' object has no attribute 'str'
ご希望の値に会った:あなたはちょうど `titanic.locを行うことができます
titanic.loc[titanic['Name'].str.contains('Charles'), 'namest'] = 'Ch'
apply
はcont
関数を呼び出して渡すこれを使って
def cont(Name):
for a in Name:
if a.str.contains('Charles'):
return('Ch')
、次に適用: は、私は、次のコードを使用して関数を作成しましたそれはName
列の値、値値でこれは、cont
関数内のName
変数がすでに文字列であることを意味します。
apply
によって使用されているすべての関数は何かを返す必要があるので、名前に 'Charles'が含まれていない場合は名前自体が返されることに注意してください。
また、2,Series
apply
の方法は、キーワード引数をaxis
としていません。
def cont(Name):
if 'Charles' in Name:
return 'Ch'
return Name
あなたも、それを定義する必要はありません:
あなたはboolean型マスクを返すようにベクトル化str.contains
を使用して、条件がどこにあるすべての行を設定することができ
apply
ループを使用したりするのではなく
titanic['namest'] = titanic['Name'].apply(lambda x: 'Ch' if 'Charles' in x else x)
[。タイタニック[ '名前'] str.contains( 'チャールズ・')、 'namest'] =「Ch'' – EdChum
あなたは受け入れるべきのあなたの質問を解決したならば、これは問題なので未回答のままです – EdChum