将pandas数据框中的列移到大数据框中的最后一列的最佳方法

时间:2019-10-04 01:39:35

标签: python pandas dataframe

我有一个100列以上的pandas数据框。 例如在以下df中:

df['A','B','C','D','E','date','G','H','F','I']

如何将日期移到最后一列?假设数据框很大,并且我无法手动写入所有列名称。

5 个答案:

答案 0 :(得分:2)

您可以尝试以下方法:

new_cols = [col for col in df.columns if col != 'date'] + ['date']
df = df[new_cols]

测试数据:

cols = ['A','B','C','D','E','date','G','H','F','I']
df = pd.DataFrame([np.arange(len(cols))],
                  columns=cols)

print(df)
#    A  B  C  D  E  date  G  H  F  I
# 0  0  1  2  3  4     5  6  7  8  9

代码输出:

   A  B  C  D  E  G  H  F  I  date
0  0  1  2  3  4  6  7  8  9     5

答案 1 :(得分:1)

使用pandas.DataFrame.poppandas.concat

print(df)
   col1  col2  col3
0     1    11   111
1     2    22   222
2     3    33   333

s = df.pop('col1')
new_df = pd.concat([df, s], 1)
print(new_df)

输出:

   col2  col3  col1
0    11   111     1
1    22   222     2
2    33   333     3

答案 2 :(得分:1)

这样:

MyClassB

答案 3 :(得分:1)

简单的重新编制索引即可完成这项工作:

original = df.columns
new_cols = original.delete(original.get_loc('date'))
df.reindex(columns=new_cols)

答案 4 :(得分:1)

您可以使用reindexunion

df.reindex(df.columns[df.columns != 'date'].union(['date']), axis=1) 

仅使用索引标头,而不使用完整的数据框。

然后,使用reindex对列进行重新排序。

使用@QuangHoang设置输出:

   A  B  C  D  E  F  G  H  I  date
0  0  1  2  3  4  8  6  7  9     5