我有一个名为date_encode的函数,它采用年-月-日格式(字符串)的日期。该函数解析该字符串,并以单独的整数返回日,月和年。
def date_encode(dateString):
dateTimeObj = datetime.strptime(dateString, '%Y-%m-%d')
return int(dateTimeObj.day), int(dateTimeObj.month), int(dateTimeObj.year)
此函数当前返回一个元组。我想做的就是将这三个返回值分配给单独的数组,这样我就可以拥有单独的“天”,“月”和“年”数组。当我尝试以下操作时,出现“ ValueError:太多值无法解包(预期为3)”错误:
days, months, years = data['Date'].apply(date_encode)
正确执行此操作的最有效方法是什么(我将遍历此数组的数十万行)。
答案 0 :(得分:0)
使用zip(*iterables)
。 Docs
以下是一个示例:
import pandas as pd
from datetime import datetime
df = pd.DataFrame({'Date': ['2019-04-24', '2019-05-25', '2019-06-26']})
def date_encode(dateString):
dateTimeObj = datetime.strptime(dateString, '%Y-%m-%d')
return dateTimeObj.day, dateTimeObj.month, dateTimeObj.year
df['day'], df['month'], df['year'] = zip(*df['Date'].apply(date_encode))
输入:
Date
0 2019-04-24
1 2019-05-25
2 2019-06-26
输出:
Date day month year
0 2019-04-24 24 4 2019
1 2019-05-25 25 5 2019
2 2019-06-26 26 6 2019