在python中,我创建了一个具有4个参数(2个强制性2个可选)
的函数 def combineDateTime(dateInput, timeInput, dateInputFormat='%Y-%m-%d', timeInputFormat='%H:%M:%S'):
.....
我想通过调用该函数并将其传递到现有数据框列的2个值来创建一个新的列,但是我无法围绕所需的语法来传递所需列所需的语法。
函数测试了传递的值类型(例如str,int等),并根据它进行不同的操作,但我认为问题是它通过了一个系列,因此逻辑不起作用。
任何人都可以建议我应该如何打电话。我正在尝试使用.Apply功能。
df_scd2_pd['NewColumn'] = df_scd2_pd[[col_EffFromDT,col_EffFromTM]].apply(combineDateTime, axis=1)
非常感谢
一种方法是将列(作为系列)传递给您的功能(假设它可以与串联一起作为前两个输入参数):
df = pd.DataFrame({
'col_EffFromDT': ['2019-03-21'],
'col_EffFromTM': ['12:34:56'],
})
def combineDateTime(dateInput, timeInput, dateInputFormat='%Y-%m-%d', timeInputFormat='%H:%M:%S'):
return pd.to_datetime(dateInput + ' ' + timeInput, format=' '.join([dateInputFormat, timeInputFormat]))
df['NewColumn'] = combineDateTime(df['col_EffFromDT'], df['col_EffFromTM'])
print(df)
输出:
col_EffFromDT col_EffFromTM NewColumn
0 2019-03-21 12:34:56 2019-03-21 12:34:56
注意:如果调用.apply(f, axis=1)
,它将每一行传递到函数f
作为串联,因此您的函数用一个参数调用,而不是两个参数。