我的数据帧有以下列:
person_id useless_1 useless_2 imp_1 ... imp_58 useless_3 useless_4
我只想要一个具有person_id
和imp
列的数据帧。但当我尝试时:
df=(df.iloc[:,:1])+(df.iloc[:,3:59])
我得到了所需的df,但person_id
出现在所有imp
列之后的末尾。为什么会发生这种情况?有什么办法把它带到前面吗?
抱歉问了这个琐碎的问题。
这里可能更适合DataFrame.filter
,因为您可以按列名进行筛选,并且保留顺序:
df.filter(regex=(r'person_id|^imp'))
使用示例数据帧进行检查:
df = pd.DataFrame(columns=['person_id', 'useless_1', 'useless_2', 'imp_1', 'imp_58'])
df.filter(regex=(r'person_id|^imp'))
# person_id, imp_1, imp_58
基于您的逻辑
df[df.columns[:1].append(df.columns[3:])]
或
df.drop(df.columns[2:4], axis=1)