删除数据集中字符串的结尾 (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]
表示“0
和 60
”,而我认为您打算写 [=15] =],生成从 0
到 60
的所有数字
>>> 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)
然而,这不是日期时间格式。它只是一个整数。
我有一个数据集,其中一列包含一些日期。
问题是有些日期由 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]
表示“0
和 60
”,而我认为您打算写 [=15] =],生成从 0
到 60
>>> 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)
然而,这不是日期时间格式。它只是一个整数。