gpt4 book ai didi

python - 将特定列移动到 DataFrame 的最右边

转载 作者:太空宇宙 更新时间:2023-11-04 01:47:04 25 4
gpt4 key购买 nike

我想将数据框中间的一些列移到最右边。我可以使用代码对单个列执行此操作:

cols=list(df.columns.values)
cols.pop(cols.index('one_column'))
df=df[cols +['one_column']]
df

但是当有 2 个系列的 100 列时,单独执行它是低效的,即。 series1_1...series1_50series2_1...series2_50 在数据框的中间。

我如何通过将 2 个系列分配为列表、弹出并放回它们来做到这一点?也许像

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com