Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.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 仅当列数超过1时解析CSV文件的条件_Python_Pandas - Fatal编程技术网

Python 仅当列数超过1时解析CSV文件的条件

Python 仅当列数超过1时解析CSV文件的条件,python,pandas,Python,Pandas,我正在尝试使用pandas从S3 bucket中存在的CSV文件中读取数据。然而,有时CSV文件只有一列,这是我不想解析的。我只想分析CSV,其中有超过1列。谁能告诉我要检查的条件是,如果列数>1,则只解析文件,否则退出循环。 下面是我正在尝试的代码 body = csv_obj['Body'] csv_string = body.read().decode('utf-8-sig') df = pd.read_csv(StringIO(csv_string),usecols = [3,4,6])

我正在尝试使用pandas从S3 bucket中存在的CSV文件中读取数据。然而,有时CSV文件只有一列,这是我不想解析的。我只想分析CSV,其中有超过1列。谁能告诉我要检查的条件是,如果列数>1,则只解析文件,否则退出循环。 下面是我正在尝试的代码

body = csv_obj['Body']
csv_string = body.read().decode('utf-8-sig')
df = pd.read_csv(StringIO(csv_string),usecols = [3,4,6])
下面是我尝试过但出现错误的第二个代码:pandas\\u libs\parsers.pyx文件,第545行,在pandas.\u libs.parsers.TextReader.\uu cinit__ pandas.errors.EmptyDataError:没有要从文件中分析的列

代码:


解析所有文件,并检查它们是否lendf.columns>1

如果文件很大,可以使用read_csvnrows=N参数读取有限的行数来测试列数,如果列数测试成功,则重新读取整个文件

我不确定您的循环代码是什么样子的,下面是一个简单的示例,如果列数等于1,则不会返回任何内容:

body = csv_obj['Body']
csv_string = body.read().decode('utf-8-sig')
df = pd.read_csv(StringIO(csv_string), nrows=10)
if len(df.columns) > 1:
    df = pd.read_csv(StringIO(csv_string),usecols = [3,4,6])
else:
    return
这可能有助于:

import pandas as pd

# put your scv file instead of following url
url="https://raw.githubusercontent.com/cs109/2014_data/master/countries.csv"
c = pd.read_csv(url)

if len(c.count()) > 1:
  # Your code
  print("Enjoy dude :)")

我在df=pd行中遇到错误。读取_csvStringIOcsv_string,usecols=[3,4,6],即使尝试解析。因为我在这里给出了列号,所以现在跳过usecols参数。在检查成功的列数后,只需使用df=df.iloc[:,[3,4,6]]对所需的列进行子集设置。请重写我的代码片段以显示。我猜我做错了什么。你能看看我在原始问题中共享的代码吗。它在pandas.\u libs.parsers.TextReader.\uu cinit\uuuu_;pandas.errors.EmptyDataError中给了我错误文件pandas\\u libs\parsers.pyx,第545行。我想如果它没有每一行的条目,它实际上不是一个CSV文件,可能需要不同的工具来读取。所有的行都有相同数量的逗号吗?也许您只需要逐行处理文件,然后根据返回的结果数选择通过/拒绝每行。我正在从S3存储桶访问CSV文件。在这种情况下,我应该做哪些更改才能使其正常工作?
import pandas as pd

# put your scv file instead of following url
url="https://raw.githubusercontent.com/cs109/2014_data/master/countries.csv"
c = pd.read_csv(url)

if len(c.count()) > 1:
  # Your code
  print("Enjoy dude :)")