【问题标题】:Delete end of a string in a dataset (python)删除数据集中字符串的结尾(python)
【发布时间】:2021-03-17 14:20:37
【问题描述】:

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

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

我们的目标是通过比较它们来根据这个日期选择数据集的行(所以我需要它们作为整数)。

【问题讨论】:

    标签: python string dataset


    【解决方案1】:
    >>> 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
    >>> 
    

    【讨论】:

    • 如果您解释您的解决方案而不仅仅是提供代码,这对您的帖子的长期价值是有益的
    【解决方案2】:

    根据经验,请尝试使用 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)
    但这不是日期时间格式。它只是一个整数。

    【讨论】:

      【解决方案3】:

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

      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
      

      【讨论】:

        【解决方案4】:

        或许可以尝试以下方法:

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

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

        还有关于您提供的代码的小提示:请记住,[0,60] 表示“060”,而我认为您打算编写类似 range(61) 的内容,从 0 生成所有数字直到并包括60

        【讨论】:

          猜你喜欢
          • 2022-01-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-05
          • 2023-04-09
          • 2015-02-02
          相关资源
          最近更新 更多