避免使用两个嵌套的for循环以提高性能

2024-09-27 22:38:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试通过存储在字典中的一些其他元素替换特定列中dataFrame中的所有元素。 我的数据帧是这样构建的:

dict_main = {'Elektro':[1,2,3],
             'Nucleo':[88,22,23]}
df = pd.DataFrame(dict_test)

我想从字典里得到元素基本上是

dict_elements = {'1': 'ABC',
                 '2': 'CDE',
                 '3': 'EFG'} 

我尝试的是使用两个for循环来替换“Elektro”列中与dict\元素的键匹配的元素。代码如下所示:

for index in df.index:
    for key in dict_elements.key():
        if df.loc[index]['Elektro'] == key:
            df.loc[index]['Elektro'] = dict_elements[key]

但是你可以想象,如果你在数据帧和字典中有几千个元素,这将花费很多时间。。。如何提高性能。还是有更好更快的方法来替代我的方法


Tags: 数据方法keyin元素dataframedffor
1条回答
网友
1楼 · 发布于 2024-09-27 22:38:53

您可以使用内置函数来完成此任务

dict_main = {'Elektro':[1,2,3],
             'Nucleo':[88,22,23]}
df = pd.DataFrame(dict_main)

以及要从中获取元素的字典:

dict_elements = {1: 'ABC',
                 2: 'CDE',
                 3: 'EFG'} 

我将dict\u元素编辑为int而不是str作为键,这可以成为一行内置函数

df['Elektro'].replace(dict_elements,inplace=True)

  Elektro  Nucleo
0     ABC      88
1     CDE      22
2     EFG      23

需要注意的一点是,与字典中的键不匹配的值将保持原始数据帧中的状态。您可以使用map函数使它们显示为NAs,如果您希望这样做的话。希望这有帮助

相关问题 更多 >

    热门问题