鱼C论坛

 找回密码
 立即注册
查看: 1915|回复: 16

[已解决]写入csv

[复制链接]
发表于 2023-7-22 10:33:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请问这个该如何写入才能使CSV文件里的是011111,而不是把最前面的0省略掉
import pandas as pd
list_1 = [{'名称':'011111'}]
df = pd.DataFrame(list_1)
df.to_csv('./fund.csv',mode='a',index=False,encoding='utf-8-sig')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-22 10:33:50 | 显示全部楼层
你好!要保持 CSV 文件中的内容为 011111,而不省略前面的零,你可以通过设置 Pandas 的参数来实现。

以下是修改后的代码示例:
import pandas as pdlist_1 = [{'名称':'011111'}]df = pd.DataFrame(list_1)# 设置 'quotechar' 参数为 ''df.to_csv('./fund.csv', mode='a', index=False, encoding='utf-8-sig', quotechar='')
通过将 quotechar 参数设置为空字符 '',可以防止 Pandas 在写入 CSV 文件时自动添加引号,从而保持字段内容的原始格式。

希望能帮助到你!如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-22 10:34:15 | 显示全部楼层
本帖最后由 isdkz 于 2023-7-22 10:35 编辑

这个问题的根源在于Python解释器会默认把以0开头的数字当作整数来处理,因此它会自动省略这个0。为了在CSV文件里保存'011111',您需要确保Python把它视为字符串,而不是整数。为此,您可以使用str函数把它转换成字符串。

这里有一个简单的方法:

首先,使用字符串类型的数据创建DataFrame,而不是整数类型。确保在创建DataFrame的时候,您的字典中的值是字符串类型。如果您的数据是整数类型,您可以在添加到字典之前,使用Python的str函数将其转换为字符串。例如:
list_1 = [{'名称': '011111'}] 
df = pd.DataFrame(list_1) 
在上述代码中,'011111'被引号包围,所以Python会将其视为字符串,而不是整数。

然后,使用 to_csv 函数将DataFrame写入CSV文件。您的代码中已经包含了这一部分。这将确保您的数据被正确地写入文件。

这就是所有的步骤。最后的代码可能是这样的:
import pandas as pd 

list_1 = [{'名称': '011111'}] 
df = pd.DataFrame(list_1) 
df.to_csv('./fund.csv', mode='a', index=False, encoding='utf-8-sig')

希望这个答案对您有所帮助!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-22 10:37:52 | 显示全部楼层
isdkz 发表于 2023-7-22 10:34
这个问题的根源在于Python解释器会默认把以0开头的数字当作整数来处理,因此它会自动省略这个0。为了在CSV ...

不行,还是省略了0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-22 10:40:47 | 显示全部楼层
Mike_python小 发表于 2023-7-22 10:33
你好!要保持 CSV 文件中的内容为 011111,而不省略前面的零,你可以通过设置 Pandas 的参数来实现。

以下 ...

报错了
屏幕截图(86).png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-22 10:41:29 | 显示全部楼层
陶远航 发表于 2023-7-22 10:34
你好!根据你提供的代码,问题出在 to_csv() 方法中的参数 index=False 上。这个参数会导致在 CSV 文件中不 ...

还是不行,变成这样了
屏幕截图(85).png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-22 10:42:59 | 显示全部楼层

报错信息能复制一下吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-22 10:46:44 | 显示全部楼层
Mike_python小 发表于 2023-7-22 10:42
报错信息能复制一下吗?

这个
Traceback (most recent call last):
  File "D:\技能\python\4.py", line 5, in <module>
    df.to_csv('./fund.csv', mode='a', index=False, encoding='utf-8-sig', quotechar='')
  File "D:\技能\python\venv\lib\site-packages\pandas\util\_decorators.py", line 211, in wrapper
    return func(*args, **kwargs)
  File "D:\技能\python\venv\lib\site-packages\pandas\core\generic.py", line 3720, in to_csv
    return DataFrameRenderer(formatter).to_csv(
  File "D:\技能\python\venv\lib\site-packages\pandas\util\_decorators.py", line 211, in wrapper
    return func(*args, **kwargs)
  File "D:\技能\python\venv\lib\site-packages\pandas\io\formats\format.py", line 1189, in to_csv
    csv_formatter.save()
  File "D:\技能\python\venv\lib\site-packages\pandas\io\formats\csvs.py", line 251, in save
    self.writer = csvlib.writer(
TypeError: quotechar must be set if quoting enabled
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-22 10:49:50 | 显示全部楼层


根据你提供的代码和错误信息,问题出现在启用引号分隔时,quotechar参数必须被设置。在你的代码中,你将quotechar参数设置为空字符串'',这导致了该错误。

要解决这个问题,你可以将quotechar设置为一个非空字符,如双引号"。此外,你还需要设置引号分隔,可以通过将quoting参数设置为csv.QUOTE_MINIMAL来实现。
下面是修改后的示例代码:

import pandas as pd
import csv

list_1 = [{'名称':'011111'}]
df = pd.DataFrame(list_1)

# 将DataFrame保存为CSV文件
df.to_csv('./fund.csv', mode='a', index=False, encoding='utf-8-sig', quotechar='"', quoting=csv.QUOTE_MINIMAL)

请注意,以上示例代码假设你的DataFrame名为df,并且你希望将其保存为名为fund.csv的文件。你可以根据自己的实际情况进行相应的修改。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-22 10:51:51 | 显示全部楼层
Mike_python小 发表于 2023-7-22 10:49
根据你提供的代码和错误信息,问题出现在启用引号分隔时,quotechar参数必须被设置。在你的代码中,你 ...

它还是没保存最前面的0
屏幕截图(87).png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-22 10:52:50 | 显示全部楼层
哈岁NB 发表于 2023-7-22 10:51
它还是没保存最前面的0

我再问问GPT
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-22 10:53:29 | 显示全部楼层
哈岁NB 发表于 2023-7-22 10:51
它还是没保存最前面的0

import pandas as pd

list_1 = [{'名称':'011111'}]
df = pd.DataFrame(list_1)

# 将"名称"列的数据类型设置为字符串
df['名称'] = df['名称'].astype(str)

# 将DataFrame保存为CSV文件,并确保前导零不会被省略
df.to_csv('./fund.csv', mode='a', index=False, encoding='utf-8-sig')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-22 10:54:38 | 显示全部楼层
https://c.binjie.fun/#/chat/1689947147516
这个是GPT,你可以去问问
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-22 10:55:20 | 显示全部楼层
Mike_python小 发表于 2023-7-22 10:53
import pandas as pd

list_1 = [{'名称':'011111'}]

还是不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-22 10:57:11 | 显示全部楼层
Mike_python小 发表于 2023-7-22 10:54
https://c.binjie.fun/#/chat/1689947147516
这个是GPT,你可以去问问

好的,感谢感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-22 10:58:43 | 显示全部楼层    本楼为最佳答案   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-22 11:01:21 | 显示全部楼层
isdkz 发表于 2023-7-22 10:58
https://blog.csdn.net/biggolden1/article/details/127819495

解决了,感谢感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 09:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表