Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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 3.x 如何在python(pandas)中导出包含带有千运算符的数字的CSV文件?_Python 3.x_Pandas_Csv_Export To Csv - Fatal编程技术网

Python 3.x 如何在python(pandas)中导出包含带有千运算符的数字的CSV文件?

Python 3.x 如何在python(pandas)中导出包含带有千运算符的数字的CSV文件?,python-3.x,pandas,csv,export-to-csv,Python 3.x,Pandas,Csv,Export To Csv,我有这个数字.csv: Title/BOLA;“总数/1333.903” 我在上面运行这段代码: df1 = pd.read_csv("numbers.csv", sep=";",header=None) print(df1) df1 = df1.stack().str.split('\s*/\s*', expand=True) df1 = df1.reset_index(level=1, drop=True).set_index(0, append=True)[1].unstack() d

我有这个
数字.csv

Title/BOLA;“总数/1333.903”

我在上面运行这段代码:

df1 = pd.read_csv("numbers.csv", sep=";",header=None)
print(df1)
df1 = df1.stack().str.split('\s*/\s*', expand=True)
df1 = df1.reset_index(level=1, drop=True).set_index(0, append=True)[1].unstack()  
df1.to_csv("test.csv")
df1 = df1.stack().str.split('\s*/\s*', expand=True)
df1 = df1.reset_index(level=1, drop=True).set_index(0, append=True)[1].unstack()
df1.to_csv("final_csv.csv")
打印(df1)
返回:

                   0                                               1   2
0  Title/BOLA  Total/1,333.903 NaN

当我保存到
final_csv.csv
时,编号
1349.098
变为
1
。我想改为保存号码
1349.098
。您能帮助我吗?

看起来您正在以字符串的形式读取第1列,然后以字符串的形式将其写回。这意味着它将继续向前推进逗号。在
to_csv(“test.csv”)
中,您没有指定分隔符,因此默认为逗号。我假设349.098会出现在下一个专栏中。您可以通过在
df1.to_csv(“test.csv”,sep=';”)
中指定分隔符来解决此问题,但请确保您的代码正在执行您认为它首先要执行的操作。

看起来您正在将列1作为字符串读取,然后将其作为字符串写回。这意味着它将继续向前推进逗号。在
to_csv(“test.csv”)
中,您没有指定分隔符,因此默认为逗号。我假设349.098会出现在下一个专栏中。您可以通过在
df1.to_csv(“test.csv”,sep=';”)
中指定分隔符来解决此问题,但请确保您的代码正在执行您认为它首先要执行的操作。

在读取csv数据时尝试使用
数千=',
标志。见param's

CSV输出:

Title,Total
BOLA,"1,333.903"

读取csv数据时,请尝试使用
数千=','
标志。见param's

CSV输出:

Title,Total
BOLA,"1,333.903"

在写入和读回期间,必须引用数字字段,因为它包含“,”分隔符:

pandas.to_csv(..., quoting=1) # for QUOTE_ALL
pandas.to_csv(..., quoting=0) # for QUOTE_MINIMAL
pandas.read_csv(..., quoting=...) # ditto

请参阅文档页面中的“引用部分”,在写回和读回时必须引用数字字段,因为它包含“,”分隔符:

pandas.to_csv(..., quoting=1) # for QUOTE_ALL
pandas.to_csv(..., quoting=0) # for QUOTE_MINIMAL
pandas.read_csv(..., quoting=...) # ditto

当代码第4行后面有此数据框时,请参见文档页面中的“报价部分”:

df1 = df1.reset_index(level=1, drop=True).set_index(0, append=True)[1].unstack()
print(df1)

    Title   Total
0   BOLA    1,333.903
然后可以删除逗号并将字符串转换为浮点:

df1['Total'] = df1['Total'].str.replace(',', '').astype(float)
结果如下:

    Title   Total
0   BOLA    1333.903

当代码第4行之后有此数据帧时:

df1 = df1.reset_index(level=1, drop=True).set_index(0, append=True)[1].unstack()
print(df1)

    Title   Total
0   BOLA    1,333.903
然后可以删除逗号并将字符串转换为浮点:

df1['Total'] = df1['Total'].str.replace(',', '').astype(float)
结果如下:

    Title   Total
0   BOLA    1333.903

这将解决我前面提到的问题,可能会满足提问者的真正需求,但却没有提出要求。(你是高谭市需要的英雄。)请看这里的工作演示:让我知道你想要还是不想要?@好奇的是,问题是当我打开CSV时,它只显示
1
,因为它将逗号解释为断路器。这就是为什么我想输出:
BOLA,“1333.903”
。我添加了完整的代码。这将解决我前面提到的问题,并且可能会满足询问者的真正需求,但没有要求。(你是高谭市需要的英雄。)请看这里的工作演示:让我知道你想要还是不想要?@好奇的是,问题是当我打开CSV时,它只显示
1
,因为它将逗号解释为断路器。这就是为什么我想输出:
BOLA,“1333.903”
。我添加了完整的代码。很抱歉,我没有得到指定
df1.to_csv(“test.csv”,sep=';”)
的位置,它将取代您的
df1.to_csv(“test.csv”)
行。很抱歉,我没有得到指定
df1.to_csv(“test.csv”,sep=';”)
的位置,它将取代您的
df1.to_csv(“test.csv”)
line。答案看起来应该有用。代码第3行和第4行中的字符串操作的目的是什么?这个问题可能是一个意外的结果,而不是熊猫的问题。答案看起来应该是可行的。代码第3行和第4行中的字符串操作的目的是什么?问题可能是意外的结果,而不是熊猫的问题。它返回
TypeError:“quoting”必须是整数
Fixed。正如docpages所说,pandas使用整数代码进行引用:
quoting=QUOTE_MINIMAL(0)、QUOTE_ALL(1)、QUOTE_NONNUMERIC(2)或QUOTE_NONE(3)
,而Python内置的csv模块使用那些常量名
csv.QUOTE_MINIMAL
等。它返回
类型错误:“quoting”必须是整数。正如docpages所说,pandas使用整数代码进行引用:
quoting=QUOTE_MINIMAL(0)、QUOTE_ALL(1)、QUOTE_NONNUMERIC(2)或QUOTE_NONE(3)
,而Python内置的csv模块使用这些常量名
csv.QUOTE_MINIMAL
等。