【问题标题】:Python: Apply a function to a dataframe column and put the result to another columnPython:将函数应用于数据框列并将结果放入另一列
【发布时间】:2017-09-06 13:34:14
【问题描述】:

您好,我想应用如下函数,将日期分隔为月份和年份。我还想将这些结果导出到名为“月”和“年”的另一列第二部分是我遇到问题的地方,即将结果导出到另一列的行。谢谢。

'Full Date' 'Month'  'Year'

07/31/2016    07      2016
05/28/2011    05      2011

【问题讨论】:

    标签: python pandas dataframe machine-learning


    【解决方案1】:

    假设FullDate 列是datetime dtype:

    In [119]: df['Month'] = df['FullDate'].dt.month
    
    In [120]: df['Year'] = df['FullDate'].dt.year
    
    In [121]: df
    Out[121]:
        FullDate  Month  Year
    0 2016-07-31      7  2016
    1 2011-05-28      5  2011
    

    如果是string (object):

    In [133]: df[['Month','Year']] = df['FullDate'].str.split('/', expand=True).loc[:, [0,2]]
    
    In [134]: df
    Out[134]:
         FullDate Month  Year
    0  07/31/2016    07  2016
    1  05/28/2011    05  2011
    

    【讨论】:

      【解决方案2】:

      另一种方法:

      df = pd.DataFrame({'FullDate': ['07/31/2016','05/28/2011']})
      df['Month'] = df['FullDate'].apply(lambda x: x.split('/')[0])
      df['Year'] = df['FullDate'].apply(lambda x: x.split('/')[2])
      

      【讨论】:

        【解决方案3】:

        更详细的方法:

        df = pd.DataFrame({'Full Date': ['07/31/2016','05/28/2011']})
        def date_breaker(date):
            year = date[-4:]
            month = date[:2]
            return (year,month)
        x = df['Full Date'].map(lambda x: date_breaker(x))
        df['year'],df['month'] = zip(*x)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-09-18
          • 1970-01-01
          • 2020-03-23
          • 2019-06-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多