当前位置: 首页 > 知识库问答 >
问题:

无法重新排序列数据

王才
2023-03-14

如果我使用len(df.columns),我的数据有3586列。如何重新排序数据序列?

ID  V1  V10 V100 V1000 V1001 V1002 ...  V990 V991 V992 V993 V994
A   1   9.0 2.9  0.0   0.0   0.0   0.0  0.0  0.0  0.0  0.0  0.0
B   1   1.2 0.1  3.0   0.0   0.0   0.0  1.0  0.0  0.0  0.0  0.0
C   2   8.6 8.0  2.0   0.0   0.0   0.0  2.0  0.0  0.0  0.0  0.0
D   3   0.0 2.0  0.0   0.0   0.0   0.0  3.0  0.0  0.0  0.0  0.0
E   4   7.8 6.6  3.0   0.0   0.0   0.0  4.0  0.0  0.0  0.0  0.0

我使用了这个df=df。重新索引(已排序(df.columns),axis=1)(基于此问题,根据列名对pandas dataframe中的列重新排序),但仍不起作用。

谢谢你们

共有1个答案

龙志勇
2023-03-14

首先获取所有没有模式V通过筛选str.contains,然后排序所有其他值通过我ndex.difference,加在一起并传递到DataFrame.reindex-首先获取第一个位置的所有非数字非匹配列,然后排序V数字列:

L1 = df.columns[~df.columns.str.contains('^V\d+$')].tolist()

L2 = sorted(df.columns.difference(L1), key=lambda x: float(x[1:]))

df = df.reindex(L1 + L2, axis=1)
print (df)
   ID   V1  V10  V100  V990  V991  V992  V993  V994  V1000  V1001  V1002
A   1  9.0  2.9   0.0   0.0   0.0   0.0   0.0   0.0    0.0    0.0    0.0
B   1  1.2  0.1   3.0   1.0   0.0   0.0   0.0   0.0    0.0    0.0    0.0
C   2  8.6  8.0   2.0   2.0   0.0   0.0   0.0   0.0    0.0    0.0    0.0
D   3  0.0  2.0   0.0   3.0   0.0   0.0   0.0   0.0    0.0    0.0    0.0
E   4  7.8  6.6   3.0   4.0   0.0   0.0   0.0   0.0    0.0    0.0    0.0
 类似资料:
  • 问题内容: 如果我有列表,如何以任意方式重新排序商品? 编辑:我不想洗牌。我想以预定义的方式对它们进行重新排序。(例如,我知道旧列表中的第3个元素应成为新列表中的第一个元素) 问题答案: 你可以这样

  • 问题内容: 我在python / pyspark中有一个带有列的数据框 ,依此类推...... 现在,我在此数据框中添加了新列。 现在,我必须安排这样的列的列来后 我已经完成如下 我收到此错误 为什么会发生此错误。我该如何纠正。 问题答案: 您可以用来更改列的顺序:

  • 我有两个dataframes(df1和df2,如下所示),它们的列在顺序和计数上都不同。我需要将这两个数据页追加到一个Excel文件中,其中的列顺序必须按照下面中指定的顺序。 df1为: 我正在尝试使用根据Col_list重新排序我的dataframe。对于dataframe中不存在的列值,该值可以是NaN。 这不能正常工作。如何实现此重新排序? 我尝试了以下方法:

  • 问题内容: 我有一堆具有相同列但顺序不同的csv文件。我们正在尝试使用SQL * Plus上载它们,但是我们需要具有固定列排列的列。 例 所需订单:ABCDEF csv文件:ACDEB(有时列不在csv中,因为它不可用) 用python可以实现吗?我们正在使用Access + Macros来做…但这太浪费时间了 PS。对不起,如果有人对我的英语能力感到沮丧。 问题答案: 您可以使用csv模块读取,

  • 问题内容: 我有一个4d numpy数组,该数组代表具有3d实例的数据集。可以说数组的形状是。 如何将数组的形状更改为? -–问题更新似乎rollaxis和transpose都能解决问题。 感谢您的回复! 问题答案: 该函数完全可以实现您想要的功能,您可以传递轴参数来控制要交换的轴: b的轴是a的轴的置换版本:b的轴0是a的第3轴,b的轴1是a的第0轴,依此类推… 这样,您可以在第二或第三位指定要

  • 我是Python的业余爱好者,我制作了一个程序,可以对长字符串进行编码并输出6个字符。 标记将数字(n)转换为字符。大写和小写字母,包括“-”和“”字符。 这是编码的其余部分。 同样,是否有方法为输出的六个字符创建顺序? 这是我到目前为止所拥有的。我从一个现有的问题中得到了这个。 如何在python中重新排序列表? 但是...它给了我这个: 我想发生的事: 我对这个完全陌生。请帮助:)