私信  •  关注

JohnE

JohnE 最近创建的主题
JohnE 最近回复了
6 年前
回复了 JohnE 创建的主题 » 如何在pandas python中为字符串创建汇总列[duplicate]

map 可以比快得多 replace

如果你的字典有两个以上的键,使用 地图 可以比快得多 代替 . 此方法有两种版本,具体取决于词典是否详尽地映射了所有可能的值(以及是否希望不匹配项保留其值或转换为nans):

穷举映射

在这种情况下,形式非常简单:

df['col1'].map(di)       # note: if the dictionary does not exhaustively map all
                         # entries then non-matched entries are changed to NaNs

虽然 地图 最常用的函数是它的参数,它可以替代地使用字典或系列: Documentation for Pandas.series.map

非穷举映射

如果有非穷尽映射,并且希望保留非匹配的现有变量,则可以添加 fillna :

df['col1'].map(di).fillna(df['col1'])

正如@jpp在这里的回答: Replace values in a pandas series via dictionary efficiently

基准点

在Pandas 0.23.1版中使用以下数据:

di = {1: "A", 2: "B", 3: "C", 4: "D", 5: "E", 6: "F", 7: "G", 8: "H" }
df = pd.DataFrame({ 'col1': np.random.choice( range(1,9), 100000 ) })

和测试 %timeit ,看起来 地图 大约比 代替 .

注意你的加速 地图 会因你的数据而有所不同。最大的加速似乎是大词典和详尽的替代品。更多的基准测试和讨论请参见@jpp answer(链接在上面)。