如何用指定列表与位置重排DataFrame列并设置对应数据类型?
解决DataFrame列重排与列类型转换问题
没问题,这两个需求都能轻松搞定,我给你分步说明具体实现方式:
一、实现列重排:将'name'和'c'置于第1、2位
你的目标是把name放在第1列,c放在第2列,其余列顺序不用特意调整。结合你给出的cols和col_position列表,我们可以这样做:
- 先提取出除了
name和c之外的所有剩余列,保留它们原来的相对顺序:
cols = ['name', 'c'] remaining_cols = [col for col in df_final.columns if col not in cols]
- 构建新的列顺序列表:把
name和c放在最前面,后面跟上剩余的列:
new_col_order = cols + remaining_cols
- 用新的列顺序重新排列DataFrame:
df_final = df_final[new_col_order]
这样处理后,name就处于第1位,c处于第2位,其余列会跟在后面,完全符合你的要求。
二、设置列数据类型:指定列为str,其余为float
接下来我们把cols里的列转成字符串类型,剩下的列转成浮点型,有两种简洁的实现方式:
方式一:使用类型映射字典
先创建一个包含所有列类型的字典,再通过astype()批量转换:
# 先给指定列设置str类型 type_dict = {col: str for col in cols} # 给剩余列设置float类型 for col in remaining_cols: type_dict[col] = float # 批量转换类型 df_final = df_final.astype(type_dict)
方式二:分批次单独转换
这种方式更直观,分别处理指定列和剩余列:
# 转换指定列为字符串类型 df_final[cols] = df_final[cols].astype(str) # 转换剩余列为浮点类型 df_final[remaining_cols] = df_final[remaining_cols].astype(float)
两种方式都能达到目的,你可以根据自己的习惯选择。
内容的提问来源于stack exchange,提问作者Bharat Sharma
相关产品推荐
相关产品推荐

