Python dataframe按照自己想要的列名进行排列,并与其他dataframe列进行对比

处理数据的时候 经常会碰到有些列是多余的 需要删除 并且列名不是按照我们想要的进行排列的
废话不多说直接上代码进行说明
# 导入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)

运行结果如下
在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vergil_Zsh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值