处理数据的时候 经常会碰到有些列是多余的 需要删除 并且列名不是按照我们想要的进行排列的
废话不多说直接上代码进行说明
# 导入pandas库
import pandas as pd
# 创建两个dataframe格式的数据data1, data2
# 这里我是使用dict类型进行转换的
dict1 = {'a': [1, 2, 3, 4, 5, 6],
'c': [2, 3, 4, 5, 1, 4],
'b': ['王', '赵', '孙', '李', '欧', ''],
'e': [1, 2, 3, 4, 5, ' '],
'd': [9, 8, 7, 6, 5, 4]}
dict2 = {'a': [1, 2, 3, 4, 5, 6],
'c': [2, 3, 4, 5, 1, 4],
'b': ['王', '赵', '孙', '李', '欧', ''],
'e': [1, 2, 3, 4, 5, ''],
'd': [9, 8, 7, 6, 5, 4],
'f': [1, 2, 3, 4, 5, 6]}
data1 = pd.DataFrame(dict1)
data2 = pd.DataFrame(dict2)
# 挑选出data2中不在data1列名里面的列 并且删除掉
data2_columns = data2.columns.tolist()
# 这里使用列表推导式 减少使用循环判断 也相应的能减少时间
not_in_data_columns = [col for col in data2_columns if col not in data1.columns.tolist()]
# 删除列或者行 都是使用drop()函数 axis=1或者axis=0 等于1为列 0为行
# 删除掉'f'列
data2 = data2.drop(not_in_data_columns, axis=1)
print("删除掉'f'列的:", data2)
# 我们想要dict2按照列名为[a, b, c, d, e]进行排序 因为上面已经删除掉了'f'列
# 因为我们举的是特殊例子[a,b,c,d,e]可以使用sort()函数进行排序 这里就不演示了
# 直接写出来所需要的列名排序
# 未排序前
print('未排序前: ', data2)
# 排序后
# 这里我们可以将我们需要的排序放入列表
column_name_list = ['a', 'b', 'c', 'd', 'e']
# 然后使用reindex()进行设置 这里需要注意的是不是reset_index()函数
# 这两个函数不是同一个函数一个是设置列的(前者),一个是重新设置索引的(后者)
# 后者是将索引重新排列的从0开始到数据的长度为止,也就是我们所拥有数据的行数
data2 = data2.reindex(columns=column_name_list)
print('排序后: ', data2)
运行结果如下