主頁 > 軟體設計 > .csv輸出中出現空白列,我該如何洗掉它?

.csv輸出中出現空白列,我該如何洗掉它?

2021-12-30 04:53:17 軟體設計

*更新以添加更多行的輸入檔案

我有一個帶有標題和后續資料的 .csv 檔案,如下所示(此處僅顯示前幾行):

    gene_name   VarXCRep.1  VarX1Rep.1  VarX2Rep.1  VarXCRep.2  VarX3Rep.2  VarX1Rep.2  VarX2Rep.2  VarXCRep.3  VarX3Rep.3  VarX1Rep.3  VarX2Rep.3
1   Soltu.DM.01G000010  360.7000522 395.2279977 323.2595994 361.5910696 327.7380499 386.8290979 336.3997167 333.0843759 317.4954424 377.756613  396.666783
2   Soltu.DM.01G000020  91.12422371 69.30538348 77.36127164 135.060696  61.85252412 110.6099    68.21624475 108.7053612 55.31681029 56.52040232 36.14709293
3   Soltu.DM.01G000030  439.1681337 183.5656103 232.0838149 579.546161  220.9018719 179.6646995 179.2348391 291.2746216 222.4196747 266.8621527 208.321404
4   Soltu.DM.01G000040  268.3102142 185.4387288 192.0217278 301.5640936 130.9345641 237.108515  203.9799475 236.921941  92.19468382 198.1791322 38.04957151
5   Soltu.DM.01G000050  341.7158389 479.5183289 504.229717  322.2876925 528.5579334 390.4957244 470.1570594 342.8399852 554.3205365 424.9761896 634.4766049
6   Soltu.DM.01G000060  468.2772607 839.1570756 759.7982036 514.516937  886.0173261 572.6048416 579.8380803 549.1014398 1011.836655 598.8300854 1077.754113
7   Soltu.DM.01G000070  2.531228436 0   5.525805117 1.429213714 8.032795341 1.83331326  5.350293706 0   4.609734191 0   7.609914302
8   Soltu.DM.01G000090  84.79615262 54.3204357  75.97982036 98.61574626 102.0165008 83.11020113 84.26712586 108.7053612 98.53306833 80.13019064 93.2214502
9   Soltu.DM.01G000100  67.07755356 73.05162042 12.43306151 118.6247383 6.426236273 77.61026135 36.11448251 97.55609336 8.643251608 67.25212429 15.2198286
10  Soltu.DM.01G000110  1.265614218 0   1.381451279 2.143820571 0   1.22220884  4.012720279 0   2.304867095 0.715448131 0.951239288
11  Soltu.DM.01G000120  821.3836276 451.4215518 846.8296342 820.3686718 737.4106123 497.4389979 835.9833915 798.5663071 752.5391067 704.7164087 532.6940011
12  Soltu.DM.01G000130  2.531228436 3.746236945 5.525805117 2.143820571 0.803279534 0.61110442  2.00636014  1.393658477 1.728650322 2.146344392 10.46363217
13  Soltu.DM.01G000140  93.65545214 127.3720561 102.2273947 105.7618148 104.4263394 108.7765868 115.7001014 98.94975183 108.9049703 110.8944603 126.5148253
14  Soltu.DM.01G000150  112.6396654 84.29033126 91.17578444 86.46742969 154.2296705 99.61002047 111.0185944 115.6736536 111.7860541 115.187149  163.6131575
15  Soltu.DM.01G000160  644.197637  573.1742525 222.413656  760.3416958 178.3280566 761.4361074 594.551388  1053.605808 222.4196747 585.2365709 303.4453328
16  Soltu.DM.01G000170  751.7748456 841.0301941 910.3763931 773.9192261 835.4107154 820.7132361 1148.975573 804.140941  849.3435247 710.4399938 946.4830913
17  Soltu.DM.01G000190  6.328071091 1.873118472 5.525805117 6.431461713 8.836074875 5.49993978  8.694227272 11.14926781 4.609734191 7.869929438 0.951239288
18  Soltu.DM.01G000200  88.59299527 73.05162042 66.30966141 74.31911313 63.45908319 78.83247019 74.23532517 86.40682554 59.35032771 59.38219485 44.70824652
19  Soltu.DM.01G000210  108.8428228 112.3871083 85.64997932 111.4786697 73.0984376  123.4430928 113.6937412 143.5468231 67.41736254 77.26839812 86.56277518
20  Soltu.DM.01G000220  5.062456873 86.16344973 93.938687   20.72359885 507.6726655 30.555221   24.74510839 6.968292383 551.4394526 54.37405793 920.7996305

這是檔案在 Bash shell 中的顯示方式

gene_name,VarXCRep.1,VarX1Rep.1,VarX2Rep.1,VarXCRep.2,VarX3Rep.2,VarX1Rep.2,VarX2Rep.2,VarXCRep.3,VarX3Rep.3,VarX1Rep.3,VarX2Rep.3
Soltu.DM.01G000010,360.7000522,395.2279977,323.2595994,361.5910696,327.7380499,386.8290979,336.3997167,333.0843759,317.4954424,377.756613,396.666783
Soltu.DM.01G000020,91.12422371,69.30538348,77.36127164,135.060696,61.85252412,110.6099,68.21624475,108.7053612,55.31681029,56.52040232,36.14709293
Soltu.DM.01G000030,439.1681337,183.5656103,232.0838149,579.546161,220.9018719,179.6646995,179.2348391,291.2746216,222.4196747,266.8621527,208.321404
Soltu.DM.01G000040,268.3102142,185.4387288,192.0217278,301.5640936,130.9345641,237.108515,203.9799475,236.921941,92.19468382,198.1791322,38.04957151
Soltu.DM.01G000050,341.7158389,479.5183289,504.229717,322.2876925,528.5579334,390.4957244,470.1570594,342.8399852,554.3205365,424.9761896,634.4766049
Soltu.DM.01G000060,468.2772607,839.1570756,759.7982036,514.516937,886.0173261,572.6048416,579.8380803,549.1014398,1011.836655,598.8300854,1077.754113
Soltu.DM.01G000070,2.531228436,0,5.525805117,1.429213714,8.032795341,1.83331326,5.350293706,0,4.609734191,0,7.609914302
Soltu.DM.01G000090,84.79615262,54.3204357,75.97982036,98.61574626,102.0165008,83.11020113,84.26712586,108.7053612,98.53306833,80.13019064,93.2214502
Soltu.DM.01G000100,67.07755356,73.05162042,12.43306151,118.6247383,6.426236273,77.61026135,36.11448251,97.55609336,8.643251608,67.25212429,15.2198286

我被要求洗掉我在以下代碼中成功完成的各種型別的列和相關資料。然后我被要求排列資料,以便標題顯示控制 (VarXC) 重復 1、2 和 3,實驗 1 (VarX1) 在彼此相鄰的列中重復,這也在以下代碼中完成:

empty_list = []


for ln in open("FinalXVartest.csv").readlines():
    col = ln.split(",")
    del col[3]
    del col[4]
    del col[5]
    del col[6]
    del col[7]
    col.append(col.pop(2))
    col.append(col.pop(3))
    col.append(col.pop(4))
    empty_list  = col
    empty_list  = '\n'
 
file_out = open("Xtest_2Var.csv", "w")
file_out.write(','.join(empty_list))
file_out.close()

當我嘗試編譯所有這些資訊時,輸出顯示如下: 這是最終輸出

我不確定如何在左側獲得該空間。有人可以幫我洗掉,以便所有行向左移動一個單元格嗎?

uj5u.com熱心網友回復:

您應該稍微更改代碼以使其按預期作業。您的代碼的問題在于您正在構建一個串列,并將 EOL\n作為元素添加到該串列中因此,當您將此串列寫入檔案時

file_out.write(','.join(empty_list))

每個換行符后會有一個逗號。我構建了一個串列串列并在\n之后添加join以避免您的問題:

empty_list = []

for ln in open("files/FinalXVartest.csv").readlines():
    col = ln.split(",")
    del col[3]
    del col[4]
    del col[5]
    del col[6]
    del col[7]
    col.append(col.pop(2))
    col.append(col.pop(3))
    col.append(col.pop(4))
    empty_list.append(col)

file_out = open("files/Xtest_2Var.csv", "w")
for item in empty_list:
    file_out.write(','.join(item)   '\n')
file_out.close()

但最好使用csv library適用于讀寫csv檔案。

uj5u.com熱心網友回復:

使用熊貓:

import pandas as pd
import re

df = pd.read_csv('FinalXVartest.csv', index_col='gene_name')
parsed = sorted([(re.match(r'VarX(.)Rep.(\d)', k).groups()[::-1], k) for k in df.columns])
cols = [k for (i, j), k in parsed if j in {'1', 'C'}]

df.to_csv('Xtest_2Var.csv')


>>> df[cols]
                    VarX1Rep.1  VarXCRep.1  VarX1Rep.2  VarXCRep.2  VarX1Rep.3  VarXCRep.3
gene_name                                                                                 
Soltu.DM.01G000010  395.227998  360.700052  386.829098  361.591070  377.756613  333.084376
Soltu.DM.01G000020   69.305383   91.124224  110.609900  135.060696   56.520402  108.705361
Soltu.DM.01G000030  183.565610  439.168134  179.664700  579.546161  266.862153  291.274622
Soltu.DM.01G000040  185.438729  268.310214  237.108515  301.564094  198.179132  236.921941
Soltu.DM.01G000050  479.518329  341.715839  390.495724  322.287692  424.976190  342.839985
Soltu.DM.01G000060  839.157076  468.277261  572.604842  514.516937  598.830085  549.101440
Soltu.DM.01G000070    0.000000    2.531228    1.833313    1.429214    0.000000    0.000000
Soltu.DM.01G000090   54.320436   84.796153   83.110201   98.615746   80.130191  108.705361
Soltu.DM.01G000100   73.051620   67.077554   77.610261  118.624738   67.252124   97.556093

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/397067.html

標籤:Python 文件

上一篇:CSV檔案資料替換

下一篇:在CSV檔案中創建多行/創建國際象棋資料庫

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more