更改熊猫中的列名称

时间:2021-07-12 18:26:49

标签: python pandas dataframe

我正在尝试更改 Pandas 数据框中列的名称。我使用 python 3.7。我有 30 列编号为 0-29,我想将它们的名称更改为 1-30。我知道这是一个愚蠢的问题,但我试图以尽可能少的行数来做,但我在网上找不到任何有效的东西。有人可以帮我吗?

enter image description here

谢谢

5 个答案:

答案 0 :(得分:2)

如果你有这样的数据框:

   0  1  2  3
0  a  d  e  f
1  b  g  h  i
2  c  j  k  l

然后你可以这样做:

df.columns = df.columns.astype(int) + 1
print(df)

打印:

   1  2  3  4
0  a  d  e  f
1  b  g  h  i
2  c  j  k  l

答案 1 :(得分:0)

在这里你可以使用它。我相信你会发现它足够简短。

 df.columns = [list(range(1,31))]

答案 2 :(得分:0)

另一种方法是使用 RangeIndex

重新创建索引
df.columns = pd.RangeIndex(1, len(df.columns)+1)

仅供参考,您可以阅读有关 Int64Index and RangeIndex 的文档:RangeIndex 是 Int64Index 的优化版本

答案 3 :(得分:0)

在这种情况下,您可以使用列表理解来重命名数据框列

frozenset

答案 4 :(得分:0)

您可以在下面使用...

示例数据:

只需创建具有 30 列的随机样本数据,如下所示,其中我们看到默认的 RangeIndex 开始索引从 0 开始,通过 step=1,我们可以对其进行更改以获得所需的值。< /p>

df = pd.DataFrame(np.random.randint(0,100,size=(100, 30)))
print(df)
    0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29
0   37  87  10  94  76  42  94  80   2  54  98  18  27  32  94  41  97  61  22  87  67  43  12  49  67  92  69  52  78  49
1   80  77  64  81  91  36  46  83  54  25  55   5   4  57  68  59  36  94  79  14  27   7  36  37  15   3   9  32  50  95
2   58  91  87  59  60  65  90  97  55  48  11  62  76  28  89  99  78  60  92  25  93  35  41  69  88  19  85  18  56  52
3   50   5  80  32  42  96  89  62  77  89  72   8   1   3  52  92  71  95  42  18   9  76   5  53  56  18  17   5   3  40
4   37  92  30  45  14  15  96  29   0  45  59  59  82  51  78  30  25  95  50  22  34  12  24  59  63   5  75  15  85  95
..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..
95  49  58   9  18  44  48  15  74  76  70  81  88  36  32  35  96  93  95   2  69  20  40  22  19  55  92  33  45  20  82
96  75  15  65  77   4   2  45  16  42  25  12  47  35  64   3  89  47  68  59  52  82  37  67  32  64  62   7  81  79  42
97   7  95  21  52  42  84   0  85   0   2  16  97  45  56  30  15  33  49  82  60  51  29   3  37  51   8  65  73  55  56
98  69  66  25  61  85  50  76  27  51  44  46  53  56  67  20  15   5  77  54  18  18  48  34   2  89  84  55  26  19   4
99  41  63  23  46  33  78  86  32   4   9  13  40  13  17  22  78  60  96  56   3  30  78  65  66  15  43  98  79  10  23

[100 行 x 30 列]

print(df.columns)
RangeIndex(start=0, stop=30, step=1)  <-- default behaviour

解决方案:

我们可以将默认的 RangeIndex 更改为 start=1,如下所示,以获得您想要的结果。

df.columns = df.columns+1
print(df.columns)
RangeIndex(start=1, stop=31, step=1)

print(df)
    1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30
0   37  87  10  94  76  42  94  80   2  54  98  18  27  32  94  41  97  61  22  87  67  43  12  49  67  92  69  52  78  49
1   80  77  64  81  91  36  46  83  54  25  55   5   4  57  68  59  36  94  79  14  27   7  36  37  15   3   9  32  50  95
2   58  91  87  59  60  65  90  97  55  48  11  62  76  28  89  99  78  60  92  25  93  35  41  69  88  19  85  18  56  52
3   50   5  80  32  42  96  89  62  77  89  72   8   1   3  52  92  71  95  42  18   9  76   5  53  56  18  17   5   3  40
4   37  92  30  45  14  15  96  29   0  45  59  59  82  51  78  30  25  95  50  22  34  12  24  59  63   5  75  15  85  95
..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..  ..
95  49  58   9  18  44  48  15  74  76  70  81  88  36  32  35  96  93  95   2  69  20  40  22  19  55  92  33  45  20  82
96  75  15  65  77   4   2  45  16  42  25  12  47  35  64   3  89  47  68  59  52  82  37  67  32  64  62   7  81  79  42
97   7  95  21  52  42  84   0  85   0   2  16  97  45  56  30  15  33  49  82  60  51  29   3  37  51   8  65  73  55  56
98  69  66  25  61  85  50  76  27  51  44  46  53  56  67  20  15   5  77  54  18  18  48  34   2  89  84  55  26  19   4
99  41  63  23  46  33  78  86  32   4   9  13  40  13  17  22  78  60  96  56   3  30  78  65  66  15  43  98  79  10  23

[100 rows x 30 columns]

有关更多信息,您可以查看help(df.columns)

 |  start : int (default: 0), or other RangeIndex instance
 |      If int and "stop" is not given, interpreted as "stop" instead.
 |  stop : int (default: 0)
 |  step : int (default: 1)
 |  name : object, optional
 |      Name to be stored in the index.
 |  copy : bool, default False
 |      Unused, accepted for homogeneity with other index types.
 |
 |  Attributes
 |  ----------
 |  start
 |  stop
 |  step
 |
 |  Methods
 |  -------
 |  from_range