【问题标题】:Removing first character of every column name in pandas删除熊猫中每个列名的第一个字符
【发布时间】:2019-06-22 20:35:18
【问题描述】:

以下代码有效:

print(ee.columns[0][1:])

但是当我将它推广到所有列时,代码不起作用:

ee.columns = ee.columns.astype(str)
for i in range(0,len(ee.columns)-1):
    ee.columns[i] = ee.columns[i][1:]

我收到错误:“索引不支持可变操作”。

请注意,ee.columns 看起来像:

【问题讨论】:

    标签: python pandas loops


    【解决方案1】:

    您可以通过使用字符串访问器str 并从第一个元素开始选择来轻松地做到这一点:

    df.columns = df.columns.str[1:]
    

    【讨论】:

    • 短而有效。
    【解决方案2】:

    yatu 的答案非常好,因为它完美地回答了您的答案,例如“我怎样才能取出第一个字符”,但是如果您想要更强大的东西...

    import pandas as pd
    
    df = pd.DataFrame({
            'A0' : [1, 2],
            'A1' : [2, 2],
            'A2' : [3, 2],
            '3A' : [4, 2],
            'A4' : [5, 2],
            'A5' : [6, 2]
    
        })
    print(df.head())
    #    A0  A1  A2  3A  A4  A5
    # 0   1   2   3   4   5   6
    # 1   2   2   2   2   2   2
    
    df.columns = df.columns.str.replace(r'^A', '')
    print(df.head())
    #    0  1  2  3A  4  5
    # 0  1  2  3  4  5  6
    # 1  2  2  2  2  2  2
    

    如您所见,我使用正则表达式模式替换了您的列名,并使用了与第一个一样简单的技术。 ;)

    【讨论】:

      【解决方案3】:

      为什么不使用.rename()

      ee.rename({c: c[1:] for c in ee.columns if c.startswith('M')}, axis='columns', inplace=True)
      

      【讨论】:

        【解决方案4】:

        由于您即时更新索引列表的内容而发生错误。原因是熊猫索引是immutable

        ee.columns = [i[1:] for i in ee.columns]
        

        【讨论】:

          猜你喜欢
          • 2021-12-06
          • 1970-01-01
          • 2018-12-03
          • 1970-01-01
          • 1970-01-01
          • 2017-10-01
          • 1970-01-01
          • 2016-10-22
          • 1970-01-01
          相关资源
          最近更新 更多