MilonNewDay 2023-02-18 12:06 采纳率: 100%
浏览 102
已结题

优化Python代码

我现在有一列,list 如图下,

img

一个table如图下

img

list的行数与table行数相同,我想给table重新赋值, 根据list的元素顺序,让元素名称找到table对应的列,然后在所在的行赋值为1;如图下

img

这是我的代码:


temp_df = pd.DataFrame(clean_dict, index=test_combined_table2.index)
industry_list = test_combined_table2['industry']
for industry_index in range(len(industry_list)):
    temp_df[industry_list[industry_index]][industry_index] = 1

由于数据比较大,遍历很慢,有什么更快捷的办法吗?

  • 写回答

7条回答 默认 最新

  • qq_46161207 2023-02-18 15:26
    关注

    您可以使用pandas的loc方法来对行和列进行定位并赋值,这样比遍历整个DataFrame的效率更高。具体代码如下:

    
    temp_df = pd.DataFrame(clean_dict, index=test_combined_table2.index)
    industry_list = test_combined_table2['industry']
    for i, industry_name in enumerate(industry_list):
        temp_df.loc[i, industry_name] = 1
    

    在loc中,第一个参数表示行索引,第二个参数表示列索引,可以用变量代替索引值,这样就可以通过遍历industry_list来定位列并赋值了。同时,为了提高效率,建议遍历时使用enumerate函数来同时获取索引和元素值。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 2月26日
  • 已采纳回答 2月18日
  • 赞助了问题酬金15元 2月18日
  • 创建了问题 2月18日

悬赏问题

  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥15 小红薯封设备能解决的来
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答
  • ¥20 在本地部署CHATRWKV时遇到了AttributeError: 'str' object has no attribute 'requires_grad'
  • ¥15 vue+element项目中多tag时,切换Tab时iframe套第三方html页面需要实现不刷新
  • ¥50 深度强化学习解决能源调度问题
  • ¥15 一道计算机组成原理问题