Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.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(逗号分隔文件),值用引号表示,逗号作为小数点_Python_Pandas - Fatal编程技术网

Python 读取csv(逗号分隔文件),值用引号表示,逗号作为小数点

Python 读取csv(逗号分隔文件),值用引号表示,逗号作为小数点,python,pandas,Python,Pandas,我有一个包含如下数据的文件: 2.10.2014 23:30:00,"25,1",nan,nan,nan 2.10.2014 23:30:00,nan,"15,2",nan,nan 2.10.2014 23:30:00,nan,nan,"125,14",nan 2.10.2014 23:45:00,nan,0,nan,nan 我想看这个文件。所需输出: 2.10.2014 23:30:00 25.1 nan nan nan 2.10

我有一个包含如下数据的文件:

    2.10.2014 23:30:00,"25,1",nan,nan,nan
    2.10.2014 23:30:00,nan,"15,2",nan,nan
    2.10.2014 23:30:00,nan,nan,"125,14",nan
    2.10.2014 23:45:00,nan,0,nan,nan
我想看这个文件。所需输出:

    2.10.2014 23:30:00 25.1  nan   nan     nan
    2.10.2014 23:30:00 nan   15.2  nan     nan
    2.10.2014 23:30:00 nan   nan   125.14  nan
    2.10.2014 23:45:00 nan   0     nan     nan
请务必注意,如果出现值
0
,则引号将消失

此时,我的代码如下所示:

结果:

     "2.10.2014 23:30:00,""25,1"",nan,nan,nan"

除了
quoting=csv.QUOTE\u NONE
之外,我还尝试了使用
escapechar='”
传递
decimal=',“
到:

此外,您可以传递
parse_dates=[0]
以将第一列解释为
datetime

In [31]:
pd.read_csv(io.StringIO(t), decimal=',', header=None, parse_dates=[0])

Out[31]:
                    0     1     2       3   4
0 2014-02-10 23:30:00  25.1   NaN     NaN NaN
1 2014-02-10 23:30:00   NaN  15.2     NaN NaN
2 2014-02-10 23:30:00   NaN   NaN  125.14 NaN
3 2014-02-10 23:45:00   NaN   0.0     NaN NaN
在您的情况下,忽略
io.StringIO
位,这只是为了让我从文本字符串加载数据,只需执行以下操作:

df=pd.read_csv("file.csv", sep=',\s+', quoting=csv.QUOTE_NONE, header=None, decimal=',', parse_dates=[0], encoding="mbcs")

decimal=','
传递给:

此外,您可以传递
parse_dates=[0]
以将第一列解释为
datetime

In [31]:
pd.read_csv(io.StringIO(t), decimal=',', header=None, parse_dates=[0])

Out[31]:
                    0     1     2       3   4
0 2014-02-10 23:30:00  25.1   NaN     NaN NaN
1 2014-02-10 23:30:00   NaN  15.2     NaN NaN
2 2014-02-10 23:30:00   NaN   NaN  125.14 NaN
3 2014-02-10 23:45:00   NaN   0.0     NaN NaN
在您的情况下,忽略
io.StringIO
位,这只是为了让我从文本字符串加载数据,只需执行以下操作:

df=pd.read_csv("file.csv", sep=',\s+', quoting=csv.QUOTE_NONE, header=None, decimal=',', parse_dates=[0], encoding="mbcs")

使用
for循环
索引每一行,并使用另一个
for循环
嵌套它以读取每列中的数据。使用
lstrip(“”)
rstrip(““”)
函数去掉引号。然后读取。它会起作用。使用
for循环
索引每一行,并使用另一个
for循环
嵌套它以读取每列中的数据。使用
lstrip(“”)
rstrip(““”)
函数去掉引号。然后读取。它会起作用。如何在
io.StringIO
中加载文件?忽略此项,在您的情况下,只需执行
df=pd.read\u csv(“file.csv”,sep=',\s+',quoting=csv.QUOTE\u NONE,header=NONE,decimal=',',parse\u dates=[0],encoding=”mbcs”)
我得到了
值错误:返回到'python'引擎,因为'c'引擎不支持正则分隔符,但这会导致'decimal'被忽略,因为'python'引擎不支持它。
如果您的csv格式与您声明的一样,您不需要
sep
参数,请尝试:
df=pd.read\u csv(“file.csv“,quoting=csv.QUOTE_NONE,header=NONE,decimal=”,”,parse_dates=[0],encoding=“mbcs”)
作为默认的
sep
参数无论如何都是逗号。不幸的是,这会创建
“2.10.2014 23:30:00”“25 1”“NaN NaN NaN NaN NaN”
,并且值25和1位于单独的列show中,以便在
io.StringIO
中加载文件。忽略这一点,在您的情况下,只需执行
df=pd.read_csv(“file.csv”,sep=',\s+',quoting=csv.QUOTE_NONE,header=NONE,decimal=',,parse_dates=[0],encoding=“mbcs”)
我得到了
值错误:返回到'python'引擎,因为'c'引擎不支持正则表达式分隔符,但这会导致'decimal'被忽略,因为'python'引擎不支持它。
如果您的csv格式与您声明的一样,您不需要
sep
参数,请尝试:
df=pd.read\u csv(“file.csv”,quoting=csv.QUOTE_NONE,header=NONE,decimal=',,parse_dates=[0],encoding=“mbcs”)
作为默认的
sep
参数无论如何都是逗号。不幸的是,这会创建
“2.10.2014 23:30:00”“25 1”“NaN NaN NaN”
,值25和1在单独的列中