【发布时间】:2021-06-26 21:59:40
【问题描述】:
如何将具有多个参数的函数应用于数据框?我的功能是这样的:
def test(a,b,c,d,e,f):
if b == 1 :
if d == 0 :
return a-f
if b == 0 :
if c == 1 :
return a-e
我的示例数据是这样的:
| a | b | c | d | e | f |
|---|---|---|---|---|---|
| 2021-04-29 22:04:000 | 1 | 0.0 | 0.0 | 2021-04-28 10:10:00 | 2021-04-29 23:14:00 |
| 2021-06-10 06:00:00 | 0 | 1.0 | 1.0 | 2021-06-09 23:00:00 | 2021-06-11 00:29:00 |
| 2021-06-09 23:00:00 | 1 | 0.0 | 0.0 | 2021-06-06 11:00:00 | 2021-06-10 06:00:00 |
| 2021-06-06 11:00:00 | 0 | 1.0 | 1.0 | 2021-06-06 08:00:00 | 2021-06-09 23:00:00 |
| 2021-06-06 08:00:00 | 1 | 0.0 | 0.0 | 2021-06-06 04:00:00 | 2021-06-06 11:00:00 |
我尝试了这行代码,然后显示错误: 代码:
df['dt'] = df.apply(test, args=('a','b','c','d','e','f'), axis=1)
错误:
test() takes 6 positional arguments but 7 were given
我不明白为什么在我的代码中只有 6 个参数时它检测为 7 个参数。
【问题讨论】:
-
第一个参数总是用行填充,任何作为
args传递的值都是额外的。在这种情况下,您已将文字字符a-f作为附加参数传递。
标签: python pandas function datetime arguments