使用Python从列中删除特定的结束值

使用Python从列中删除特定的结束值,python,pandas,Python,Pandas,在我的数据框中有一个年份列,在年底附加了一些额外的数字。这只发生在2011年和1998年。我在下面附上了一个例子,展示了将列转换为列表以更好地查看数据后的情况。我只需要删除'-1'和'-9'。从数据上看,似乎是2011年1月和1998年8月。我需要删除它们的原因是将其与另一个日期格式为2011、2012(例如)的数据框合并 考虑到您有下面这样的df df = DataFrame({ 'year':['2010', '2011-1', '1999', '1998-1'] }) 输入测向

在我的数据框中有一个年份列,在年底附加了一些额外的数字。这只发生在2011年和1998年。我在下面附上了一个例子,展示了将列转换为列表以更好地查看数据后的情况。我只需要删除'-1'和'-9'。从数据上看,似乎是2011年1月和1998年8月。我需要删除它们的原因是将其与另一个日期格式为2011、2012(例如)的数据框合并


考虑到您有下面这样的df

df = DataFrame({
    'year':['2010', '2011-1', '1999', '1998-1']
})
输入测向

    year
0   2010
1   2011-1
2   1999
3   1998-1
解决方案

df['year'] = df.year.str.split('-').str[0]
输出

    year
0   2010
1   2011
2   1999
3   1998
解释
我们将年份列拆分为“-”(如果存在),然后获取列中字符串的第一部分。

它们可能是日期范围吗?@ti7它以前是日期范围。我使用strip删除了最后三个数字,但2011年和1998年在破折号后有四个数字-出于某种原因,Utsav给出的解决方案导致了此错误代码:1:SettingWithCopyWarning:试图在数据帧切片的副本上设置值。尝试使用.loc[row\u indexer,col\u indexer]=value,请参见文档中的注意事项:perf1['Year']=perf1.Year.str.split('-').str[0]“有什么建议吗@UTSAV请你展示一下你正在做的会导致警告的事情。创建深度拷贝并使用资源对我来说毫无意义。如果要在深度复制上应用更改,可以执行以下操作。-->df['year']=df.year.copy().str.split('-').str[0]我输入的代码与您作为上述答案编写的代码完全相同,它向我发出了警告。我对熊猫还很陌生,所以我不确定你所说的深度复制是什么意思。我知道出了什么问题。我正在创建一个新的dataframe变量,以便在出错时不会干扰旧的dataframe变量。我只需要使用初始数据帧中的原始别名,就可以了。谢谢你的帮助!有一个浅拷贝和深拷贝的概念,即在复制数据时如何将数据放置在内存位置。您可以搜索深层和浅层副本。