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 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表