我有一个100列以上的pandas数据框。 例如在以下df中:
df['A','B','C','D','E','date','G','H','F','I']
如何将日期移到最后一列?假设数据框很大,并且我无法手动写入所有列名称。
答案 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.pop
和pandas.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)
您可以使用reindex
和union
:
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