鱼C论坛

 找回密码
 立即注册
查看: 1925|回复: 3

python如何把列表写入csv的指定列

[复制链接]
发表于 2023-6-6 13:09:42 | 显示全部楼层 |阅读模式

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

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

x
如题,比如我想把列表lsit=[a,b,c,d,e]续写进已有文件的第10列,应该如何写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-6-6 13:25:20 | 显示全部楼层
要将一个列表写入CSV文件的指定列,你可以使用pandas库。这个库提供了一个非常方便的数据处理框架,可以直接读取和写入CSV文件。以下是你可以按照的步骤:

1. 先读取CSV文件到pandas的DataFrame对象
2. 创建一个新列并将数据插入到第10列(索引为9,因为Python索引从0开始)
3. 写回到CSV文件

下面是一个代码示例:
import pandas as pd

# 读取CSV文件到DataFrame
df = pd.read_csv('myfile.csv')

# 创建新列并赋值为你的列表
df.insert(9, 'my_list', ['a', 'b', 'c', 'd', 'e']) 

# 写回到CSV文件
df.to_csv('myfile.csv', index=False)

这段代码假设你的列表长度与CSV文件中的行数一致。如果列表长度不一致,你需要按实际情况进行调整。

注意, to_csv 函数中的 index=False 参数用于防止pandas在写入时添加额外的索引列。如果你需要索引列,可以去掉这个参数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2023-6-6 13:35:20 | 显示全部楼层
isdkz 发表于 2023-6-6 13:25
要将一个列表写入CSV文件的指定列,你可以使用pandas库。这个库提供了一个非常方便的数据处理框架,可以直 ...

但是这样子我已有的文件会报错。
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 1: invalid continuation byte
,换成GB2312也不行,大佬有没有什么解决办法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-6 17:53:32 | 显示全部楼层
您需要按照以下步骤将列表写入文件的第10列:

1. 使用Python内置的open()函数打开文件。在打开文件时,需要指定文件路径以及打开方式,例如:file = open("file.txt","r+")。

2. 在打开文件后,可以使用readlines()方法读取文件中所有数据。如果只需要访问特定行的数据,则可以使用readline()方法逐行读取文件。

3. 将要写入文件中的数据存储在列表变量中。在这个例子中,我们已经有了一个包含元素a、b、c、d和e的列表lsit。

4. 在文件中找到第10列,并将要写入的数据插入该列。在这个例子中,我们可以假设每一行都是用空格分隔的字符串,并且第10列位于第9个空格之后。因此,我们可以使用split()方法来分割每行数据,并通过索引来确定第10列的位置。最后,我们可以使用join()方法将新的字符串重新组合起来,并将其写入文件。

5. 关闭文件并退出程序,确保所有更改都已保存。

下面是一个示例程序:
file = open("file.txt", "r+")
data = file.readlines()
list = ["a", "b", "c", "d", "e"]
for i in range(len(data)):
    line = data[i].split()
    line.insert(9, list[i])
    data[i] = " ".join(line) + "\n"
file.seek(0)
file.writelines(data)
file.close()

在这个示例程序中,我们打开了名为file.txt的文件并读取了其中的所有行。我们将要写入文件的数据(即列表lsit)存储在list变量中,并使用一个循环来遍历每一行数据。在每次迭代中,我们使用split()方法将该行分割成单词,并使用insert()方法将新的数据插入到第10列。最后,我们使用join()方法重新组合单词并将其写回到data列表中。一旦循环结束,我们使用seek(0)方法将文件指针移动到文件开头,并使用writelines()方法将更改后的数据写回到文件中。最后,我们关闭文件并退出程序。请注意,在这个示例程序中,我们假设每行数据都已按照空格分隔,并且第10列位于第9个空格之后。在实际情况中可能需要根据文件特定的格式进行调整。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-22 21:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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