• pandas中遍历dataframe的每一个元素


    假如有一个需求场景需要遍历一个csv或excel中的每一个元素,判断这个元素是否含有某个关键字

    那么可以用python的pandas库来实现。

    方法一:

    pandas的dataframe有一个很好用的函数applymap,它可以把某个函数应用到dataframe的每一个元素上,而且比常规的for循环去遍历每个元素要快很多。如下是相关代码:

    import pandas as pd
    data = [["str","ewt","earw"],["agter","awetg","aeorgh"]]
    dataframe1 = pd.DataFrame(data=data,columns=["name1","name2","name3"])
    print(dataframe1)
    bool_array = dataframe1.applymap(lambda x:"w" in x)
    out_array = dataframe1[bool_array]
    print(out_array)
    
    >>
       name1  name2   name3
    0    str    ewt    earw
    1  agter  awetg  aeorgh
    
      name1  name2 name3
    0   NaN    ewt  earw
    1   NaN  awetg   NaN
    

    代码中,bool_array为一个逻辑矩阵,满足条件元素的位置为true,否则为false。然后通过逻辑矩阵去索引dataframe1,就可以得出满足条件的元素。

    方法二:

    第一种方法是一次性遍历每个元素,这样不好分column去处理,那换一种方式可以每次遍历一列

    #接上面代码
    file_columns = dataframe1.columns.tolist()
    for column in file_columns:
        bool_index = dataframe1[column].str.contains("w")
        filter_data = dataframe1[column][bool_index] 
        print(filter_data)
    
    >>
    Series([], Name: name1, dtype: object)
    0      ewt
    1    awetg
    Name: name2, dtype: object
    0    earw
    Name: name3, dtype: object
    

    代码种 Series.str.contains 是 Series 才有的一个操作。另外,filter_data只输出每一列中满足条件的元素,更方便下一步的操作。

    简单说明:

    针对pandas的dataframe和series,有强大的高阶函数:apply,applymap和map函数等,它们比简单的for循环要快很多,善用这些高阶函数会让你事半功倍。

  • 相关阅读:
    调用WinRar进行解压缩操作
    SQL中数据分组重新编号
    VS2005 常用快捷键
    启用IIS6的Gzip压缩功能
    TSQL字段说明信息
    SQL Server 连接不上内网解决方案
    错误信息:A potentially dangerous Request.Form value was detected from the client
    repeater 总结
    GridView实现先执行 后绑定问题
    搜索功能 where部分
  • 原文地址:https://www.cnblogs.com/Niuxingyu/p/10517917.html
Copyright © 2020-2023  润新知