Python 处理以“开始”开头的.csv文件;sep=";开始时,使用Pandas读取_csv()
我有一个以制表符分隔的.csv文件,当您使用记事本打开时,该文件如下所示(您在记事本中看到的空间实际上是制表符(\t): “sep=”以便excel能够正确读取.csv文件。问题是,当您尝试使用read_csv打开该文件时,它会返回一个列名为“s”的单列数据框。”。如果我用Excel打开文件并双击第一列宽度以自动设置宽度、保存和关闭,则该文件的格式将正确设置为逗号分隔。使用记事本打开文件时,文件开头不再显示“sep=”,然后熊猫会正确读取所有列和值 在任何人询问之前: 1.我尝试使用以下方法删除第一行:Python 处理以“开始”开头的.csv文件;sep=";开始时,使用Pandas读取_csv(),python,pandas,csv,Python,Pandas,Csv,我有一个以制表符分隔的.csv文件,当您使用记事本打开时,该文件如下所示(您在记事本中看到的空间实际上是制表符(\t): “sep=”以便excel能够正确读取.csv文件。问题是,当您尝试使用read_csv打开该文件时,它会返回一个列名为“s”的单列数据框。”。如果我用Excel打开文件并双击第一列宽度以自动设置宽度、保存和关闭,则该文件的格式将正确设置为逗号分隔。使用记事本打开文件时,文件开头不再显示“sep=”,然后熊猫会正确读取所有列和值 在任何人询问之前: 1.我尝试使用以下方法删除
with open(csvFileName, mode="rU") as infile:
with open(csvFileName, mode="r") as infile:
要删除第一行,或将“\t”替换为“,”并将其写回另一个文件,所有操作都无效。
2.我还尝试检测和使用不同的编码方案,因此编码不是问题。
3.文件使用lineterminator=\n
,我使用该参数读取
4.我使用skiprows=0
跳过第一行,不起作用
5.我试图设置header=1
以将其指向具有header的行,并设置sep=\t
,它正确读取列数和行数,但列名为“UnnamedXYZ”,值均为NaNs
欢迎您提出任何想法!阅读使用skiprows
skiprowslist-like,int或可调用,可选
Line numbers to skip (0-indexed) or number of lines to skip (int) at the start of the file.
If callable, the callable function will be evaluated against the row indices, returning True if the row should be skipped and False
否则。一个有效的可调用参数的示例是lambda x:
[0,2]中的x
如果要使用第一行中的分隔符值来解析csv: 从data.csv输入:
sep = ,
Year Dec Jan
1 50 60
2 25 50
3 30 30
4 40 20
5 10 10
将文件读入列表,并保存到数据框:
x = []
sep = ''
with open(filename) as f:
for i, line in enumerate(f):
if i == 0:
sep = line.rstrip()[-1]
if i > 0:
x.append(line.rstrip().split(','))
x = pd.DataFrame(data=x[1:], columns=x[0])
x
如果没有分隔符,或者分隔符字段为空,或者csv的后续行中不存在分隔符,则应添加进一步的逻辑来处理。这很有效,谢谢!只需稍作调整即可将
拆分中的“,”替换为sep
。
x = []
sep = ''
with open(filename) as f:
for i, line in enumerate(f):
if i == 0:
sep = line.rstrip()[-1]
if i > 0:
x.append(line.rstrip().split(','))
x = pd.DataFrame(data=x[1:], columns=x[0])
Year Dec Jan
0 1 50 60
1 2 25 50
2 3 30 30
3 4 40 20
4 5 10 10