Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 处理以“开始”开头的.csv文件;sep=";开始时,使用Pandas读取_csv()_Python_Pandas_Csv - Fatal编程技术网

Python 处理以“开始”开头的.csv文件;sep=";开始时,使用Pandas读取_csv()

Python 处理以“开始”开头的.csv文件;sep=";开始时,使用Pandas读取_csv(),python,pandas,csv,Python,Pandas,Csv,我有一个以制表符分隔的.csv文件,当您使用记事本打开时,该文件如下所示(您在记事本中看到的空间实际上是制表符(\t): “sep=”以便excel能够正确读取.csv文件。问题是,当您尝试使用read_csv打开该文件时,它会返回一个列名为“s”的单列数据框。”。如果我用Excel打开文件并双击第一列宽度以自动设置宽度、保存和关闭,则该文件的格式将正确设置为逗号分隔。使用记事本打开文件时,文件开头不再显示“sep=”,然后熊猫会正确读取所有列和值 在任何人询问之前: 1.我尝试使用以下方法删除

我有一个以制表符分隔的.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