这是另一种方式:
df.explode('column').squeeze().map(dd).groupby(level=0).agg(list)
输出:
0 [1, 2, 3, 4]
1 [5, 6, 7]
Name: column, dtype: object
选项 2:
pd.Series([list(map(dd.get, l)) for l in df['column']])
输出:
0 [1, 2, 3, 4]
1 [5, 6, 7]
dtype: object
时间:
应用 lambda-map-tolist:
%timeit df.column.apply(lambda x: pd.Series(x).map(dd).tolist())
每个循环 1.15 毫秒 ± 39.7 微秒(平均值 ± 标准偏差。7 次运行,每次 1000 次循环)
爆炸-挤压-地图-groupby:
%timeit df.explode('column').squeeze().map(dd).groupby(level=0).agg(list)
每个循环 2.56 毫秒 ± 78.7 微秒(平均值 ± 标准偏差。7 次运行,每次 100 次循环)
具有列表理解和映射的 pd.Series 构造函数:
%timeit pd.Series([list(map(dd.get, l)) for l in df['column']])
每个循环 88.7 µs ± 4.58 µs(平均值 ± 标准偏差。7 次运行,每次 10000 次循环)
列爆炸图
%timeit df.column.explode().map(dd).groupby(level=0).agg(list)
每个循环 1.21 毫秒 ± 28 微秒(平均值 ± 标准偏差。7 次运行,每次 1000 次循环)
列应用 lambda 列表映射
%timeit df.column.apply(lambda x: list(map(dd.get, x)))
每个循环 152 µs ± 4.12 µs(平均值 ± 标准偏差。7 次运行,每次 10000 次循环)