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

Delete end of a string in a dataset (python)

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

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

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

也许可以尝试以下方法:

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

请注意,这些操作应用于整个列,而不是对行进行操作,这在使用 pandas 时通常被认为更加惯用,它们 lots of useful library methods 可以轻松执行类似的转换。

还有关于您提供的代码的小说明:请记住,[0,60] 表示“060”,而我认为您打算写 [=15] =],生成从 060

的所有数字
>>> 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
>>> 

您可以按如下方式在一行中完成所有操作:

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

根据经验,请尝试使用 python 理解而不是 pandas 实例方法。 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)
然而,这不是日期时间格式。它只是一个整数。