在python中使用panda从函数返回两个不同列的值

2024-09-29 19:25:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经对数据框的一列应用了一个函数,该列包含日期和年、月、日、时、分、秒,我想做的是将年、月、日分开,并将其放在一列中,同时将其放在另一列中,我的代码如下所示

def change_format(day):
  if day != 'nan':  
    format_1 = datetime.strptime(day, "%a %b %d %H:%M:%S %z  %Y")

    new_day = format_1.strftime('%d/%m/%Y')
    new_time = format_1.strftime('%H:%M:%S')                               
  return new_day,new_time
concatenar['pubDate']=concatenar['pubDate'].apply(change_format) 

到目前为止,在我的专栏中,它没有返回任何值


Tags: 数据函数代码formatnewdatetimeiftime
2条回答

根据您的代码,不清楚第二列的位置。当前的apply函数应该返回一个列,其中每个条目都是一个元组。要将其解压为两列,必须指定要放置输出的两列,并且可以将apply()与pd.Series()一起再次使用

concatenar[ ["pubDate_day","pubDate_time"] ] = concatenar["pubDate"].apply(change_format).apply(pd.Series)

您可以阅读有关解包元组here列的更多信息

您可以使用.tolist()将元组输出转换为列表,然后使用pd.DataFrame()构建包含2个必需列的数据框架,如下所示:

concatenar[["pubDate_date","pubDate_time"]] = pd.DataFrame(concatenar["pubDate"].apply(change_format).tolist(), index=concatenar.index)

使用pd.DataFrame()pd.Series()快得多。您可以参考其他一些帖子的this answerthis answer来比较使用pd.DataFrame()pd.Series()构建新列的速度

相关问题 更多 >

    热门问题