社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

JohnE

JohnE 最近创建的主题
JohnE 最近回复了
5 年前
回复了 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(链接在上面)。