很多时候,我有一个大数据框df
来保存基础数据,并且需要创建更多的列来保存由基础数据列计算的衍生数据。
我可以在 Pandas 中这样做:
df['derivative_col1'] = df['basic_col1'] + df['basic_col2']
df['derivative_col2'] = df['basic_col1'] * df['basic_col2']
....
df['derivative_coln'] = func(list_of_basic_cols)
等。Pandas 将一次性计算并分配所有衍生列的内存。
我现在想要的是有一个惰性求值机制,将衍生列的计算和内存分配推迟到实际需要的时刻。将lazy_eval_columns 定义为:
df['derivative_col1'] = pandas.lazy_eval(df['basic_col1'] + df['basic_col2'])
df['derivative_col2'] = pandas.lazy_eval(df['basic_col1'] * df['basic_col2'])
这将像 Python 'yield' 生成器一样节省时间/内存,因为如果我发出df['derivative_col2']
命令只会触发特定的计算和内存分配。
lazy_eval()
那么在 Pandas 中该怎么做呢?欢迎任何提示/想法/参考。