GVKun编程网logo

如何在CSV文件中转置数据集?(csv数据转换)

33

以上就是给各位分享如何在CSV文件中转置数据集?,其中也会对csv数据转换进行解释,同时本文还将给你拓展Android:如何在CSV文件中写入换行符?、bash–在csv文件中插入一行、CSV文件数据

以上就是给各位分享如何在CSV文件中转置数据集?,其中也会对csv数据转换进行解释,同时本文还将给你拓展Android:如何在CSV文件中写入换行符?、bash – 在csv文件中插入一行、CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建、java-在csv文件中编辑内容等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

如何在CSV文件中转置数据集?(csv数据转换)

如何在CSV文件中转置数据集?(csv数据转换)

例如,我想转换:

Name,Time,ScoreDan,68,20Suse,42,40Tracy,50,38

进入:

Name,Dan,Suse,TracyTime,68,42,50Score,20,40,38

编辑:原始问题不正确地使用术语“转置”。

答案1

小编典典

如果整个文件内容都适合内存,则可以使用

import csvfrom itertools import izipa = izip(*csv.reader(open("input.csv", "rb")))csv.writer(open("output.csv", "wb")).writerows(a)

您基本上可以将zip()izip()视为转置操作:

a = [(1, 2, 3),     (4, 5, 6),     (7, 8, 9)]zip(*a)# [(1, 4, 7),#  (2, 5, 8),#  (3, 6, 9)]

izip() 避免立即复制数据,但基本上会这样做。

Android:如何在CSV文件中写入换行符?

Android:如何在CSV文件中写入换行符?

我正在尝试将数据整理到.CSV文件中。我想将数据放在特定的行中,所以我尝试将“ \ n”放进去,但是它不起作用。请帮助我将数据放入特定的行中。谢谢提前..

public void writeData(String data,String strFilePath)        {            PrintWriter csvWriter;            try            {                File file = new File(strFilePath);                if(!file.exists()){                    file = new File(strFilePath);                }                csvWriter = new  PrintWriter(new FileWriter(file,true));                csvWriter.print(data+","+"hello");                csvWriter.append(''\n'');                csvWriter.print("world");                csvWriter.close();            }            catch (Exception e)            {                e.printStackTrace();            }        }

答案1

小编典典

您的代码看起来不错,并且我确定换行符已正确写入文件中。我能想到的唯一原因是,您使用的编辑器未将文件\n视为行分隔符,而是\r\n将对视为行分隔符(如Windows上的记事本)打开了文件。

因此,您可以使用编写换行符,也可以使用write.print("\r\n")诸如的其他其他编辑器简单地打开文件vim。无论使用什么编辑器打开文件,都将使用换行符。

bash – 在csv文件中插入一行

bash – 在csv文件中插入一行

我有一个巨大的csv文件(按TB级).

现在,我想将一行是一个标题插入到顶部.

例如,如果input.csv如下所示:

1,2,3,4
 22,23,1

我想要它看起来像

id1,id2,id3,id4
 1,4
 and so on

我如何从shell,终端,awk,bash?/

到位,使用sed:
sed -i 1i"id1,id4" file.csv

编辑:

正如@Ed Morton指出的那样,使用-i开关sed的sed会将文件编辑到位,因此在编辑大文件时可能是危险的.如果在-i选项之后提供前缀,则sed将创建一个备份.所以这样的事情会更安全:

sed -i.bak 1i"id1,id4" file.csv

原始文件将位于file.csv.bak中

CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建

CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建

CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建

一.csv文件的创建

(1)新建一个文本文档:

打开新建文本文档,进行编辑。

注意:关键字与关键字之间用英文半角逗号隔开。第一行为引用字段,第二行为对应值。例如:

(2)生成csv文件

将文本文档重命名更改文件扩展名,将“.txt”改为“.csv”

重命名重新打开后就是一个CSV文件格式。例如:

二.数据的表示和读写

csv文件的每一行都是一维数据,可以使用python中的列表类型表示,整个csv文件是一个二维数据,由表示每一行的列表类型作为元素,组成一个二维列表。

注:打开CSV文件的路径可以是绝对路径也可以是相对路径,可根据个人习惯来编写。

(1)导入csv格式数据到列表:

1 fo=open("city.csv","r")#打开命名为city的CSV文件
2 ls=[] #定义一个空列表,将CSV中读取的文件放进列表
3 for line in fo:
4     line=line.replace("\n","")
5     ls.append(line.split(","))
6 print(ls)
7 fo.close()#关闭文件

运行结果:

[[''城市'', ''环比'', ''同比'', ''定基''], [''北京'', ''101.5'', ''120.7'', ''121.4''], [''上海'', ''101.2'', ''127.3'', ''127.8''], [''广州'', ''101.3'', ''119.4'', ''120.0''], [''深圳'', ''102.0'', ''140.9'', ''145.5''], [''沈阳'', ''100.1'', ''101.4'', ''101.6''], ['''', '''', '''', '''']]

(2)逐行处理CSV格式数据:

 1 fo=open("city.csv","r")#打开命名为city的CSV文件
 2 ls=[]#定义一个空列表,将CSV中读取的文件放进列表
 3 for line in fo:
 4     line=line.replace("\n","")
 5     ls=line.split(",")
 6     lns=""
 7     for s in ls:
 8         lns+="{}\t".format(s)
 9     print(lns)
10 fo.close()

运行结果:

城市    环比    同比    定基    
北京    101.5    120.7    121.4    
上海    101.2    127.3    127.8    
广州    101.3    119.4    120.0    
深圳    102.0    140.9    145.5    
沈阳    100.1    101.4    101.6

(3)将一维数据写入CSV文件:

1 fo=open("city.csv","w")
2 ls=[''湖北'',''101.2'',''120.7'',''121.4'']
3 fo.write(",".join(ls)+"\n")
4 fo.close()

运行结果;

city.csv文件原有数据:

运行之后的数据:

(4)将二维数据写入CSV文件:

 1 fr=open("city1.csv","r")
 2 fw=open("city1out.csv","w")
 3 ls=[]
 4 for line in fr:#将CSV文件当中的二维数据读到列表当中去
 5     line=line.replace("\n","")
 6     ls.append(line.split(","))
 7 for i in range(len(ls)):#遍历列表变量计算百分数
 8     for j in range(len(ls[i])):
 9         if ls[i][j].replace(".","").isnumeric():
10             ls[i][j]="{:.2}%".format(float(ls[i][j])/100)
11 for row in ls:#将列表变量中的两位数据写入CSV文件当中去
12     print(row)
13     fw.write(",".join(row)+"\n")
14 fr.close()
15 fw.close()

运行结果:

city1文件数据与前两个例子的city文件的内容相同,city1out.csv文件为新建立的一个CSV文件。

 city1out.csv文件数据:

 

java-在csv文件中编辑内容

java-在csv文件中编辑内容

我正在尝试找到一种方法来编辑csv文件的内容.

主应用

package project;


public class Test {

    public static void main(String[] ages) {

        //Load file 
        AnimalManager aMgr = new AnimalManager();
        aMgr.loadFromFile("AnimalDetails.txt");

//        try {
//        Animals anim = aMgr.getAnimalById("48331827032019");
//        aMgr.deleteAnimal(anim);
//        } catch (IllegalArgumentException exc) {
//          System.out.println(exc);
//      }

        System.out.println("Edit Animal:");

        boolean edited = aMgr.editAnimal("48331827032019",5,"German","200","Huskies","n",1000.0,"John"); //By ID
            if (edited) {
                System.out.println("Animal has been edited successfully.");
            } else {
                System.out.println("Animal not found (test Failed).");

            }
}
}

动物经理

package project;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;




public class AnimalManager {

    private final ArrayList<Animals> animalList;

    public AnimalManager() {
        this.animalList = new ArrayList<>();
    }

    public boolean addAnimal(Animals a) {
        if (a == null)
            throw new IllegalArgumentException("Animal argument is null");

        if(animalList.contains(a))
            return false;
        animalList.add(a);
        return true;
    }

    public void deleteAnimal (Animals a) {
        if (a == null)
            throw new IllegalArgumentException("Animal argument is null");

        animalList.remove(a);
    }

    public Animals getAnimalById(String ID) {
        for (Animals a : this.animalList) {
            if (a.getID().equals(ID))
                return a; 
        }
        return null;
    }

    public boolean editAnimal(String ID,int age,String breed,String breedpurity,String motherBreed,String fatherBreed,String medicalHistory,String identification,double price,String owner) {
        // test for null and for duplicate
        if (ID == null || age == 0 || breed == null || breedpurity == null || motherBreed == null|| fatherBreed == null || medicalHistory == null|| price == 0 || owner == null)
            throw new IllegalArgumentException("One or more arguments are null");

        // Search for the animal.
        for (Animals p: animalList) {
            if (p.getID().equals(ID)) {
                p.setAge(age);
                p.setBreed(breed);
                p.setMother(motherBreed);
                p.setFather(fatherBreed);
                p.setMedical(medicalHistory);
                p.setIdenti(identification);
                p.setPrice(price);
                p.setowner(owner);
                return true; // Animal has been edited successfully.
            }
        }
        return false; // Means animal with the supplied id is not found.
    }


    //Load from file
    public void loadFromFile(String filename) {
        try {
            Scanner sc = new Scanner(new File(filename));

            sc.useDelimiter("[,\r\n]+");
            //animal details: id,age,breed,purity of breed,mother breed,father breed,medical history,identification,price,owner

            while(sc.hasNext()) {
                String ID = sc.next();
                int age = sc.nextInt();
                String breed = sc.next();
                String breedpurity = sc.next();
                String motherBreed = sc.next();
                String fatherBreed = sc.next();
                String medicalHistory = sc.next();
                String identification = sc.next();
                double price = sc.nextDouble();
                String owner = sc.next();

                animalList.add(new Animals(ID,breedpurity,motherBreed,fatherBreed,medicalHistory,owner ));

            }
            sc.close();

        }catch (IOException e) {
            System.out.println("Exception thrown. " + e);
    }


}

    public String toString() {
        // use String if more comfortable with it - StringBuilding faster for concat
        // than (immutable) String
        StringBuilder strBuilder = new StringBuilder();
        for (Animals p : this.animalList) {
            strBuilder.append(p.toString()).append("\n");
        }

        return strBuilder.toString();
    }
}

这里的想法是提供您要编辑并写下新信息以替换旧信息的特定动物ID.但是,该代码似乎不起作用-当我运行该程序时,它会提示“已成功编辑”,但csv文件的内容保持不变.

CSV

0,2,AmercianShorthair,100,y,900.0,Ann
3,4,GermanShepherd,no,yes,600.0,Dave
6,3,Poodle,300.0,Dianna
456,Azawakh,50,UnkNown,April
25041019042018,1,Vizsla,TreeingTennesseeBrindle,500.0,Lex
3271,Beagle,200.0,Blanton
48331827032019,33,sheperd,Mike
最佳答案
从您提供的代码的外观来看,您似乎无法写入ArrayList< Animals>的内容. animalList;归档.为了澄清,请注意

for (Animals p: animalList) {
    if (p.getID().equals(ID)) {
          p.setAge(age);
          p.setBreed(breed);
          p.setMother(motherBreed);
          p.setFather(fatherBreed);
          p.setMedical(medicalHistory);
          p.setIdenti(identification);
          p.setPrice(price);
          p.setowner(owner);
          return true; // Animal has been edited successfully.
      }
}

不会覆盖磁盘上CSV文件的副本.而是,整个操作发生在CSV文件的ArrayList表示形式中.它编辑已存储在易失性内存中的动物对象,但不会将它们转换回CSV文件.

通过类似于How to replace a specific line in a file using Java?的解决方案覆盖CSV文件中的特定行

我们今天的关于如何在CSV文件中转置数据集?csv数据转换的分享就到这里,谢谢您的阅读,如果想了解更多关于Android:如何在CSV文件中写入换行符?、bash – 在csv文件中插入一行、CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建、java-在csv文件中编辑内容的相关信息,可以在本站进行搜索。

本文标签: