删除数据集中字符串的末尾 (python)



我有一个数据集,列中有一些日期.
问题是有些日期由 2 个日期组成,例如 2010-2011.
我想删除我所有数据集上的第二个日期,基本上有date = date[:4]
我试过了,但没有用(我的数据集有 61 行):

for i in [0,60]:  
df['Date'][i] = df['Date'][i][:4] 

目标是通过比较基于此日期选择数据集的行(因此我需要将它们作为整数)。

您可以在一行中完成所有操作,如下所示:

import pandas as pd
#Example data
data = pd.DataFrame()
data['date'] = ['2010', '2010-2011', '2012', '2009-2010']
#Split on '-' and make integer
data['date'] = data['date'].apply(lambda x: x.split('-')[0]).astype('int')
#Print update dataframe
data

也许可以尝试以下方法:

df['Date'] = df['Date'].str.slice(0, 4)
df['Date'] = pd.to_numeric(df['Date'])

请注意,这些操作应用于整个列,而不是对行进行操作,这在使用pandas时通常被认为是更惯用的,它们有许多有用的库方法来轻松执行类似的转换。

关于您提供的代码还有一点小说明:请记住,[0,60]的意思是"060",而我认为您打算写类似range(61)的东西,生成从0到包括60的所有数字

根据经验,尝试使用 python 理解而不是 pandas 实例方法。 熊猫实例方法的示例如下所示df['Date'].str.slice(0, 4).在这种情况下,.str是数据帧df['Date']的实例方法。而是使用列表推导式,如下所示:

df['Date'] = [i[:4] for i in df['Date']]

如果您想更具体,并根据 2010-2011 之间的破折号进行拆分,请执行以下操作:

df['Date'] = [i.split("-")[0] for i in df['Date']]

要更改数据类型,请执行以下操作:

df['Date'] = df['Date'].astype(int)
但是这不是日期时间格式。它只是一个整数。

>>> date = "2011-2013"             #our Input
>>> date.split("-")                #split out input using -
['2011', '2013']                   #output
>>> date.split("-")[0]             #get the first date 'string'
'2011'                             #output
>>> int(date.split("-")[0])        #get the first date 'integer'
2011                               #output
>>> 

最新更新