我有一个.csv包含多个表的文件.
使用熊猫,这将是拿到两个数据帧的最佳策略inventory,并HPBladeSystemRack从这个文件?
输入.csv看起来像这样:
Inventory
System Name IP Address System Status
dg-enc05 Normal
dg-enc05_vc_domain Unknown
dg-enc05-oa1 172.20.0.213 Normal
HP BladeSystem Rack
System Name Rack Name Enclosure Name
dg-enc05 BU40
dg-enc05-oa1 BU40 dg-enc05
dg-enc05-oa2 BU40 dg-enc05
Run Code Online (Sandbox Code Playgroud)
到目前为止,我提出的最好的方法是将此.csv文件转换为Excel工作簿(xlxs),将表拆分为表并使用:
inventory = read_excel('path_to_file.csv', 'sheet1', skiprow=1)
HPBladeSystemRack = read_excel('path_to_file.csv', 'sheet2', skiprow=2)
Run Code Online (Sandbox Code Playgroud)
然而:
xlrd模块.我在运行python脚本“找不到parser.pyx:未找到文件”时遇到错误,并且路径为当前工作目录+“ pandas_libs \ parsers.pyx”。我找不到为什么VsCode引用wkdr而不是正确指定的应用程序路径。
关于SO的这个话题已经问了很多问题。(以及许多其他)。到目前为止,在众多答案中,没有一个对我有真正的帮助。如果我错过 了有用的,请告诉我。
我只是想将带有熊猫的CSV文件读入数据框。听起来很简单。
我的档案 Test.csv
1,2,3,4,5
1,2,3,4,5,6
,,3,4,5
1,2,3,4,5,6,7
,2,,4
Run Code Online (Sandbox Code Playgroud)
我的代码:
import pandas as pd
df = pd.read_csv('Test.csv',header=None)
Run Code Online (Sandbox Code Playgroud)
我的错误:
pandas.errors.ParserError: Error tokenizing data. C error: Expected 5 fields in line 2, saw 6
Run Code Online (Sandbox Code Playgroud)
我对这个问题的猜测是,Pandas查找第一行,并期望接下来的行中具有相同数量的令牌。如果不是这种情况,它将以错误停止。
在众多答案中,使用选项的建议例如:
error_bad_lines=False或header=None或skiprows=3更多无用的建议。
但是,我不想忽略任何行或跳过。而且我不预先知道数据文件有多少列和行。
因此,基本上可以归结为如何找到数据文件中的最大列数。这是要走的路吗?我希望有一种简单的方法可以简单地读取第一行中没有最大列号的CSV文件。谢谢您的提示。我在Win7上使用Python 3.6.3,Pandas 0.24.1。
这是我试图摆脱的场景:
我正在尝试读取以下类型的 csv:
para1,para2,para3,para4
1,2,3,4,
1,2,3,4,5,
1,2,3,4,
2,3,4,5,6,7,8,9,0,
Run Code Online (Sandbox Code Playgroud)
我正在使用以下命令并收到以下错误:
>>> import pandas as pd
>>> df =pd.read_csv("test.csv")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python35\lib\site-packages\pandas\io\parsers.py", line 702, in parser_f
return _read(filepath_or_buffer, kwds)
File "C:\Python35\lib\site-packages\pandas\io\parsers.py", line 435, in _read
data = parser.read(nrows)
File "C:\Python35\lib\site-packages\pandas\io\parsers.py", line 1139, in read
ret = self._engine.read(nrows)
File "C:\Python35\lib\site-packages\pandas\io\parsers.py", line 1995, in read
data = self._reader.read(nrows)
File "pandas\_libs\parsers.pyx", line 899, in pandas._libs.parsers.TextReader.read
File "pandas\_libs\parsers.pyx", line 914, in pandas._libs.parsers.TextReader._read_low_memory
File "pandas\_libs\parsers.pyx", line 968, …Run Code Online (Sandbox Code Playgroud) 我检查了这个答案,因为我遇到了类似的问题.
但是,出于某种原因,我的所有行都被跳过了.
我的代码很简单:
import pandas as pd
fname = "data.csv"
input_data = pd.read_csv(fname)
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
File "preprocessing.py", line 8, in <module>
input_data = pd.read_csv(fname) #raw data file ---> pandas.core.frame.DataFrame type
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pandas/io/parsers.py", line 465, in parser_f
return _read(filepath_or_buffer, kwds)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pandas/io/parsers.py", line 251, in _read
return parser.read()
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pandas/io/parsers.py", line 710, in read
ret = self._engine.read(nrows)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/pandas/io/parsers.py", line 1154, in read
data = self._reader.read(nrows)
File "pandas/parser.pyx", line 754, in pandas.parser.TextReader.read (pandas/parser.c:7391)
File "pandas/parser.pyx", line 776, in pandas.parser.TextReader._read_low_memory (pandas/parser.c:7631) …Run Code Online (Sandbox Code Playgroud) 这是创建为 temp.cvs 的文件
我已将上述文件制作成temp.csv。然后运行以下内容。
df=pd.read_csv("temp.csv")
df
Run Code Online (Sandbox Code Playgroud)
然后我得到了
ParserError:标记数据时出错。C 错误:第 9 行应有 1 个字段,但看到了 5 个字段
所以我尝试了
df=pd.read_csv("temp.csv",error_bad_lines=False)
df
Run Code Online (Sandbox Code Playgroud)
并得到了。
{\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf840
0 {\fonttbl\f0\fnil\fcharset0 HelveticaNeue;}
1 {\colortbl;\red255\green255\blue255;\red53\gre...
2 {*\expandedcolortbl;;\cssrgb\c27059\c27059\c2...
3 \paperw11900\paperh16840\margl1440\margr1440\v...
4 \deftab560
5 \pard\pardeftab560\slleading20\partightenfactor0
我仍然不知道问题是什么...请帮助我...
我有一个 CSV 文件,我正在使用 Python 来解析该文件。我发现文件中的某些行具有不同的列数。
001;Snow,Jon;19801201
002;Crom,Jake;19920103
003; ;Wise,Frank;19880303 <-- Invalid row
004;Wiseau,Tommy;4324;1323;2323 <-- Invalid row
Run Code Online (Sandbox Code Playgroud)
我想将这些无效行写入单独的文本文件中。
我使用这行代码从文件中读取。
df = pd.read_csv('names.csv', header=None,sep=';')
Run Code Online (Sandbox Code Playgroud)
我在这里找到的一种解决方案是使用以下代码跳过有问题的行:
data = pd.read_csv('file1.csv', on_bad_lines='skip')
Run Code Online (Sandbox Code Playgroud)
我可以从“跳过”更改为“警告”,这将给出有问题的行的行号并跳过该行。但这将返回警告消息,而不是行本身。
伙计们,我一直在尝试从已经下载的 Kaggle 加载一些数据集。
hist_trans = pd.read_csv('historical_transactions.csv')
new_trans = pd.read_csv('new_merchant_transactions.csv')
train = pd.read_csv('train.csv', parse_dates=['first_active_month'])
test = pd.read_csv('test.csv', parse_dates=['first_active_month'])
Run Code Online (Sandbox Code Playgroud)
我遇到了这个错误 UnicodeDecodeError: 'utf-8' 编解码器无法解码位置 0 中的字节 0xd3: 无效的连续字节