我正在将我的旧代码从pandas迁移到polars。但我无法为应用函数找到变通方法。我有一个函数,我从apply函数接收的数据中进行一些计算,我必须使用一些列。
我在pandas中的代码:
import pandas as pd
data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)
self.var1 = 'A'
self.var2 = 'B'
def some_calculation(row):
var = self.var1
var2 = self.var2
cal1 = row[var] + row[var2]
cal2 = row[var] * row[var2]
return list(zip(cal1 , cal2))
df['calc_data'] = df.apply(some_calculation, axis=1)
字符串
现在,在浏览了polars文档并使用apply函数后,我发现它不传递列名,因此我无法进行计算,因为我的数据框架可能有不同的列,我无法找到解决方案。
请帮帮我
1条答案
按热度按时间cbeh67ev1#
解决方案是停止从
apply
的Angular 思考。你可以这样做
字符串
虽然你可能不希望返回列表,所以你可以做一些类似的事情
型
如果您坚持要维护反模式,即带名称的逐行迭代,那么您可以使用
iter_rows(named=True)
为每一行获取dict
s的生成器。你的功能,如定义,不为我工作,所以我修改它到这个...
型
这样的话我就...
型
使用generator你可以:
型
也就是说,如果您要保持行迭代,那么“迁移”到polars几乎没有什么好处。