我尝试重新索引包含三列的 CSV 文件,其中第一列是字符串(不是整数)。
我希望第一列中的第一行从 1、2、3 等开始。
这是原始 CSV 文件:
count,username,user_id
1200,ZMQ1314,5406865623
1201,Bongtuy,1076568810
1202,Tingcall,1469929831
1203,rithboren47,1503590446
1204,Bongheue,1464987984
... etc.
我想重写一个新的 CSV 文件而不更改第二列和第三列中的任何数据,如下所示:
count,username,user_id
1,ZMQ1314,5406865623
2,Bongtuy,1076568810
3,Tingcall,1469929831
4,rithboren47,1503590446
5,Bongheue,1464987984
... etc.
我尝试了以下代码,但没有成功:
import csv
with open('data-left.csv', 'r') as f1:
fileone = f1.readlines()
with open('data-left2.csv', 'w', encoding='utf-8') as nf: # target_userid2.txt or target_userid2.json
nf.write('count,username,user_id' + '\n')
count1 = 1
for item in fileone:
if item[1] != "None":
re_indexing = str(count1)
record = re_indexing + ',' + item[1] + ',' + item[2]
nf.write(record)
count1 += 1
非常感谢任何帮助。
我强烈建议使用
pandas
包来处理电子表格。首先,使用安装软件包
pip install pandas
安装后,pandas,以下是如何使用它来替换第一列中的值。
df = pd.read_csv(PATH_TO_CSV)
# Create a dictionary from original value to new value.
mapping = {1200: 1, 1201: 2, 1202: 3, 1203: 4, 1204: 5}
df["count"] = df["count"].replace(mapping)
df.to_csv("updated_data.csv", index=False)
要使用任意数量的元素进行映射,您可以使用以下字典理解:
{i + 1199: i for i in range(1, 6)}
产生
{1200: 1, 1201: 2, 1202: 3, 1203: 4, 1204: 5}