我不太了解该apply
功能是如何工作的。这是我的代码,它工作正常:
dftest = pd.DataFrame({'a': ['A BERTHOU'], 'b': ['BERTHOU']})
def test2(a, b):
return a + b
dftest['concat'] = dftest.apply(lambda row: test2(row['a'], row['b']), axis=1)
但我想在不使用 lambda 函数的情况下做同样的事情。我试过这个:
dftest['concat'] = dftest.apply(test2(dftest['a'], dftest['b']), axis=1)
和这个
dftest['concat'] = dftest.apply(test2(dftest['a'].str, dftest['b'].str), axis=1)
但没有一个有效。
你能告诉我如何在不使用 lambda 函数的情况下使用我的函数吗?
一个精度:我想使用复杂的功能,所以
df['sum'] = df.col1 + df.col2 or
dftest['concat'] = dftest[['a', 'b']].sum(axis=1)
不会工作。
我知道解决方案
dftest['concat'] = dftest.apply(test2, axis=1)
def test2(row):
return row.a + row.b
但我不喜欢它:如果不查看函数(apply ligne 中没有参数)就无法理解应用了什么+函数很丑:函数不是通用的并且与 row.a 和 row.b 相关联
结论:目前最好的解决方案似乎是
dftest['concat'] = dftest.apply(lambda row: test2(row['a'], row['b']), axis=1)
如果不对复杂函数使用 lambda 并使用良好的编码实践,似乎不可能做到这一点