用python将csv文件中乱码的用户列重新赋值。最后从1开始用数字代替现有的用户id,不删除重复,用相同数字代替相同id,跳过第一行
时间: 2023-05-28 11:05:44 浏览: 161
假设原始csv文件名为data.csv,乱码的用户列名为"用户",可以使用以下代码实现:
```python
import csv
# 读取csv文件
with open('data.csv', 'r', newline='', encoding='utf-8') as f:
reader = csv.reader(f)
rows = list(reader)
# 获取用户列的索引
header = rows[0]
user_index = header.index('用户')
# 重新赋值用户列并用数字代替
user_dict = {}
for i in range(1, len(rows)):
user = rows[i][user_index]
if user not in user_dict:
user_dict[user] = len(user_dict) + 1
rows[i][user_index] = user_dict[user]
# 写入新的csv文件
with open('new_data.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerows(rows)
```
这段代码首先读取原始csv文件,然后获取"用户"列的索引。接着遍历每一行数据,将"用户"列的值去重并用数字代替,同时记录每个用户对应的数字。最后将新的数据写入一个新的csv文件中。
相关问题
Python读取csv文件出现乱码
Python读取csv文件出现乱码可能是因为文件编码格式与读取时指定的编码格式不一致导致的。可以尝试以下几种方法解决:
1.在读取csv文件时指定正确的编码格式,例如:data = pd.read_csv('filename.csv', encoding='utf-8')。
2.使用文本编辑器打开csv文件,将编码格式转换为与读取时指定的编码格式一致。
3.在读取csv文件时添加参数engine='python',例如:data = pd.read_csv('filename.csv', engine='python')。
4.使用第三方库chardet检测文件编码格式,然后再指定正确的编码格式进行读取。
用python将csv文件中有重复的行的某一列按照相同的元素进行整数排列,从1开始递增,不同的行用不同的整数
可以使用pandas库来实现这个功能,具体代码如下:
```python
import pandas as pd
# 读取csv文件
df = pd.read_csv('file.csv')
# 按照某一列进行排序
df = df.sort_values(by='column_name')
# 重置索引
df = df.reset_index(drop=True)
# 给每一行的某一列赋值
df['new_column'] = (df['column_name'] != df['column_name'].shift()).cumsum()
# 保存结果到csv文件
df.to_csv('new_file.csv', index=False)
```
其中,`column_name`是需要进行排列的列名,`new_column`是新添加的列名,用于存储排列后的整数。这段代码会将重复的行按照相同的元素进行整数排列,不同的行用不同的整数,从1开始递增。
阅读全文