我想将数据框中间的某些列移到最右边。
我可以使用代码对单个列执行此操作:
cols=list(df.columns.values)
cols.pop(cols.index('one_column'))
df=df[cols +['one_column']]
df
但是,当100个2列的列(即)单独执行时,效率低下。数据框中间的
series1_1... series1_50
和series2_1... series2_50
。如何通过将两个系列分配为列表,然后将其弹出并放回去,该如何做?也许像
cols=list(df.columns.values)
series1 = list(df.loc['series1_1':'series1_50'])
series2 = list(df.loc['series2_1':'series2_50'])
cols.pop('series1', 'series2')
df=df[cols +['series1', 'series2']]
但这没用。谢谢
最佳答案
如果只想移动列,则可以这样调用concat
:
cols_to_shift = ['colA', 'colB']
pd.concat([
df[df.columns.difference(cols_to_shift)],
df[cols_to_shift]
], axis=1
)
或者,您可以对列进行一些列表操作。
cols_to_keep = [c for c in df.columns if c not in cols_to_shift]
df[cols_to_keep + cols_to_shift]
最小的例子
np.random.seed(0)
df = pd.DataFrame(np.random.randint(1, 10, (3, 5)), columns=list('ABCDE'))
df
A B C D E
0 6 1 4 4 8
1 4 6 3 5 8
2 7 9 9 2 7
cols_to_shift = ['B', 'C']
pd.concat([
df[df.columns.difference(cols_to_shift)],
df[cols_to_shift]
], axis=1
)
A D E B C
0 6 4 8 1 4
1 4 5 8 6 3
2 7 2 7 9 9
[c for c in df.columns if c not in cols_to_shift]
df[cols_to_keep + cols_to_shift]
A D E B C
0 6 4 8 1 4
1 4 5 8 6 3
2 7 2 7 9 9
关于python - 将特定的列移到DataFrame的最右边,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58868570/