以上就是给各位分享如何在CSV文件中转置数据集?,其中也会对csv数据转换进行解释,同时本文还将给你拓展Android:如何在CSV文件中写入换行符?、bash–在csv文件中插入一行、CSV文件数据
以上就是给各位分享如何在CSV文件中转置数据集?,其中也会对csv数据转换进行解释,同时本文还将给你拓展Android:如何在CSV文件中写入换行符?、bash – 在csv文件中插入一行、CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建、java-在csv文件中编辑内容等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:- 如何在CSV文件中转置数据集?(csv数据转换)
- Android:如何在CSV文件中写入换行符?
- bash – 在csv文件中插入一行
- CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建
- java-在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文件中写入换行符?
我正在尝试将数据整理到.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文件中插入一行
现在,我想将一行是一个标题插入到顶部.
例如,如果input.csv如下所示:
1,2,3,4 22,23,1
我想要它看起来像
id1,id2,id3,id4 1,4 and so on
我如何从shell,终端,awk,bash?/
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文件的创建
(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文件中编辑内容
我正在尝试找到一种方法来编辑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
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文件中编辑内容的相关信息,可以在本站进行搜索。
本文标签: