计算整个CSV文件以及Python中每行中某些单词的出现次数

如何解决计算整个CSV文件以及Python中每行中某些单词的出现次数

我正在处理来自多个服务器的数据,并为每个服务器生成一个CSV文件。我已经设法将所有服务器中的数据编译到一个文件中,并且合并文件具有如下数据-

Description,dc1pp1sellv01,dc1pp2sellv01,dc2pp1sellv01
1.1 Database Placement,PASSED,PASSED
1.2 Use dedicated least privilaged account,PASSED
1.3 Diable MySQL history,FAILED
2.1 Ensure old passwords is set to 1,DEPRICATED,NA

上面文件中的每个服务器列都可以有结果值,可以是以下任意一个-

[“通过”,“失败”,“例外”,“不适用”,“已弃用”]

从上面的CSV文件中,我想计算结果并创建一个如下所示的数据集

Description,dc2pp1sellv01,FAILED,EXCEPTION,NA,DEPRECATED
1.1 Database Placement,3,0
1.2 Use dedicated least privilaged account,0
1.3 Diable MySQL history,2,1,0
2.1 Ensure old passwords is set to 1,1

解决方法

这是一个建议(相当冗长,以突出显示正在发生的事情):

home view

@model IEnumerable<Asp.NETMVCCRUD.Models.ShowModels>
@{
    ViewBag.Title = "CTC Company";
    Layout = "~/Views/Shared/AdminPage2.cshtml";
}

@foreach (var item in Model)
    {
        <div class="col-md-3" style="margin-bottom:20px">
            <div class="thumbnail">
                <div class="img-responsive" style="margin-bottom:20px">
                    <img src="@Url.Content(item.ImageURL)" target="_blank" style="background-size:cover" height="240" width="240" />
                </div>

                <div class="caption" style="border-top:3px solid #808080">

      **\\ i want to post Panorama value to Show panorama view in image src**

                    <h4 style="color:blueviolet;font:bolder"><a id="Panorama" name="Panorama" href="/PathroomShow/Showpanorama" target="_blank">@item.Image360File</a></h4>

                    

                    <h4 style="color:blueviolet;font:bolder"><a href="@Url.Content(item.ImageURL)" onclick="cataloge" target="_blank">@item.ModelName</a></h4>
                    <h5 style="color:darkslateblue;font:bolder"> Supplier : @item.Cid</h5>
                    <h5 style="color:darkslateblue;font:bolder"> Model : @item.Sid</h5>
                    <h5 style="color:darkslateblue;font:bolder"> Pathroom : @item.PathroomNameID</h5>
                    <h5 style="color:dimgrey;font:bolder">Floor : @item.FloorID</h5>
                    <h5 style="color:blue;font:bolder">Size : @item.Size</h5>
                    <h5 style="color:red;font:bolder">Date : @item.DateShow</h5>

                </div>

            </div>
        </div>
    }
panorama view


@model Asp.NETMVCCRUD.Models.ShowModels
@*@model IEnumerable<Asp.NETMVCCRUD.Models.ShowModels>*@
@{
    ViewBag.Title = "Showpanorama";
}

<h2>Showpanorama</h2>

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/aframe/1.0.4/aframe.min.js"></script>

<a-scene>

      ** \\this panorama i want to get Image360URL value**

    <img id="panorama" src="#" />
    <a-sky src="#panorama" rotation="0 -90 0"></a-sky>
</a-scene>

我假设您的数据位于名为import csv events = ["PASSED","FAILED","EXCEPTION","NA","DEPRECATED"] # Open files with open('data.csv','r') as csv_in,open('data_out.csv','w') as csv_out: # Initialize csv-reader and -writer csv_reader,csv_writer = csv.reader(csv_in),csv.writer(csv_out) # Process header line_in = next(csv_reader) line_out = line_in + events csv_writer.writerow(line_out) # Process data for line_in in csv_reader: line_out = line_in for event in events: line_out += [sum(1 if event == entry else 0 for entry in line_in[1:])] csv_writer.writerow(line_out) 的文件中。您必须进行调整。我希望它能起作用...

PS:示例数据中有一个拼写错误:data.csv应该是DEPRICATED。这会导致输出异常。

一个更紧凑的版本,没有不必要的辅助变量,如下所示:

DEPRECATED
,

您可以使用Counter对特定单词的出现次数进行计数。假设您已经打开.csv文件并存储在字符串input中:您可以执行以下操作:

from collections import Counter

res_values = ("PASSED","DEPRECATED")

input = ("Description,dc1pp1sellv01,dc1pp2sellv01,dc2pp1sellv01\n"
         "1.1 Database Placement,PASSED,PASSED\n"
         "1.2 Use dedicated least privilaged account,PASSED\n"
         "1.3 Diable MySQL history,FAILED\n"
         "2.1 Ensure old passwords is set to 1,DEPRICATED,NA")

print('\n'.join(
    [line + ',' + ','.join(
        [str(Counter(line.split(','))[res])
         if i != 0
         else res
         for res in res_values]
    )
     for i,line in enumerate(input.split('\n'))]))

我使用列表推导来更好地优化流程(因为文件可能很大),但这是另一个更清晰的代码,其作用完全相同:

split = input.split('\n')                      # Split the input line by line
for i,line in enumerate(split):               # For each line of the input
    if i == 0:                                 # Write full result name (for the first line)
        split[i] += ','.join(res_values)
    else:                                      # Count and write result occurrences
        counts = Counter(line.split(','))
        for res in res_values:
            split[i] += ',' + str(counts[res])
print('\n'.join(split))                        # Join the full string

我已经提出了一种易于执行的解决方案,但是出于优化目的,与逐行读取文件相比,将文件存储在像这样的字符串变量中当然更好。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-