Python 根据其他列中的子字符串更改列值
在Pandas中,我试图通过选中包含日期的列Python 根据其他列中的子字符串更改列值,python,pandas,Python,Pandas,在Pandas中,我试图通过选中包含日期的列Age来编辑数据框中的列Year,例如Mon Dec 28 11:19:42 CST 2007 ID年龄年 1周一12月28日11:19:42 CST 2007 NaN 2周二9月28日12:39:41 CST 2008南部 我试图通过使用df.loc[df[df.Age.str.contains(“2007”)],'Year']=2007来实现这一点,但是,这会返回错误ValueError:无法将大小为20的序列复制到尺寸为11359的数组轴上 预期
Age
来编辑数据框中的列Year
,例如Mon Dec 28 11:19:42 CST 2007
ID年龄年
1周一12月28日11:19:42 CST 2007 NaN
2周二9月28日12:39:41 CST 2008南部
我试图通过使用df.loc[df[df.Age.str.contains(“2007”)],'Year']=2007来实现这一点,但是,这会返回错误ValueError:无法将大小为20的序列复制到尺寸为11359的数组轴上
预期结果:
ID年龄年
1周一12月28日11:19:42 CST 2007
2周二9月28日12:39:41 CST 2008南部
df[df['Age'].str.contains(“2007”)]['Year']=2007
也不起作用。有人能帮我解决我该怎么做吗
提前谢谢 您可以使用:
或:
另一种可能的解决办法是:
你需要df.loc[df.Age.str.contains(“2007”),'Year']=2007
。我是个傻瓜。非常感谢。
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
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
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