2016-12-18 9 views
1

パンダでは、Mon Dec 28 11:19:42 CST 2007などの日付を含む列Ageをチェックしてデータフレーム内の列Yearを編集しようとしています。他の列の部分文字列に基づいてパンダを変更する

ID Age Year
1 Mon Dec 28 11:19:42 CST 2007 2007
:私はdf.loc[df[df.Age.str.contains("2007")], 'Year'] = 2007を使用してこれをやろうとしている

ID Age Year
1 Mon Dec 28 11:19:42 CST 2007 NaN
2 Tue Sep 28 12:39:41 CST 2008 NaN

は、しかし、これはエラーにValueError: cannot copy sequence with size 20 to array axis with dimension 11359

期待される結果を返します。2 Tue Sep 28 12:39:41 CST 2008 NaN
df[df['Age'].str.contains("2007")]['Year'] = 2007も機能しません。どのように私はこれを正しく行うことができるか誰かが私を助けることができますか?

ありがとうございます!

+1

'df.loc [df.Ageを.str.contains( "2007")、 "Year"] = 2007'。 – Psidom

+0

私はお尻です。ありがとうございました! – user3394131

答えて

1

あなたはlocstr.endswithを使用することができます。

df.loc[df.Age.str.endswith("2007"), 'Year'] = 2007 
print (df) 
    ID       Age Year 
0 1 Mon Dec 28 11:19:42 CST 2007 2007.0 
1 2 Tue Sep 28 12:39:41 CST 2008  NaN 

またはstr.contains

df.loc[df.Age.str.contains("2007"), 'Year'] = 2007 
print (df) 
    ID       Age Year 
0 1 Mon Dec 28 11:19:42 CST 2007 2007.0 
1 2 Tue Sep 28 12:39:41 CST 2008  NaN 

maskによってもう1つの可能な解決策:あなたが必要

df.Year = df.Year.mask(df.Age.str.endswith("2007"), 2007) 
print (df) 
    ID       Age Year 
0 1 Mon Dec 28 11:19:42 CST 2007 2007.0 
1 2 Tue Sep 28 12:39:41 CST 2008  NaN 
+0

私は馬鹿なので、私はdf []をあまりにも多く持っていました。ありがとう! – user3394131

関連する問題