如何将多个数据框列传递到函数



在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作为串联,因此您的函数用一个参数调用,而不是两个参数。

相关内容

  • 没有找到相关文章