如何将多个数据框列传递给函数[重复]
Posted
技术标签:
【中文标题】如何将多个数据框列传递给函数[重复]【英文标题】:How to pass multiple dataframe columns to a function [duplicate] 【发布时间】:2019-08-12 13:57:04 【问题描述】:在 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_scd2_pd['calc_EffFrom'] = df_scd2_pd.apply(lambda row: combineDateTime(row[col_EffFromDT], row[col_EffFromTM]), axis =1) 【参考方案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
,因此您的函数会使用一个参数而不是最少需要两个参数来调用。
【讨论】:
以上是关于如何将多个数据框列传递给函数[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 pyspark 中,我想将值的数据帧列传递给函数并在该数据列中操作说,第 5 个值
如何在执行 SELECT... 语句时将表列传递给 plpgsql 函数
如何使用 spark.sql 将表列传递给 rand 函数?