📅  最后修改于: 2023-12-03 15:18:52.164000             🧑  作者: Mango
在处理数据时,经常出现一些列名重复的情况,这时需要对数据进行处理,删除重复的列并保留在前面的数据。Python提供了多种方式来实现此操作,以下是其中两种常见的方式:
通过pandas库的duplicated()方法可以获取列名是否重复的布尔序列,然后使用iloc[]方法切片保留前面的列即可。
import pandas as pd
# 读取数据
df = pd.read_csv('data.csv')
# 获取重复列
duplicate_columns = df.columns[df.columns.duplicated()]
# 删去重复列
df.drop(columns=duplicate_columns, inplace=True)
# 保留前面的列
df = df.iloc[:, :len(df.columns)-len(duplicate_columns)]
通过numpy库的unique()方法可以获取不重复的列名,然后使用in1d()方法获取重复的列名,再使用delete()方法删除重复的列即可。
import numpy as np
import pandas as pd
# 读取数据
df = pd.read_csv('data.csv')
# 获取重复列
unique, index, count = np.unique(df.columns, return_index=True, return_counts=True)
duplicate_columns = unique[np.in1d(unique, unique[count > 1])]
# 删去重复列
df = np.delete(df.values, index[np.in1d(unique, duplicate_columns)], axis=1)
# 转为pandas.DataFrame
df = pd.DataFrame(df, columns=np.delete(unique, index[np.in1d(unique, duplicate_columns)]))
以上是两种常见的方法,当然还有其他的方式如使用字典、DataFrame、set等来实现,大家可以选择自己适合的方式来进行操作。