【发布时间】:2021-11-20 18:24:31
【问题描述】:
我正在使用数据框构建数据增强管道。我创建了一个函数 h3_int,它接受一个 int 输入并将一列十六进制值附加到数据帧。下面是h3_int的实现:
from h3.unstable import vect
def h3_int(df, level):
df['h3_' + str(level)] = vect.geo_to_h3(df.lat.values, df.lng.values, level).tolist()
return df
df 由lng 和lat 列组成:
lat lng
0 43.64617 -79.42451
1 43.64105 -79.37628
2 43.66724 -79.41598
3 43.69602 -79.45468
4 43.66890 -79.32592
... ... ...
9515 36.10644 -115.16711
9516 36.00814 -115.17496
9517 36.10711 -115.16607
9518 36.03119 -115.05352
9519 36.13554 -115.11541
h3_int的简单用法:
df.pipe(h3_int, 8)
由于输入是动态的,我也想动态生成管道,但我一直难以实现。
代码,
(df.pipe(h3_int, i) for i in range(8, 10))
返回:
<generator object <genexpr> at 0x7fd4858557b0>
虽然,
(df.pipe((h3_int, i) for i in range(8, 10)))
引发异常:
TypeError: 'generator' object is not callable
在 pandas 中实现动态管道的正确方法是什么?不幸的是,我发现文档和 Stack Overflow 都没有答案。
【问题讨论】:
-
h3_int是什么? -
另外,请添加您的数据框示例。
-
@user17242583 已更新!
标签: python pandas lambda iteration pipe