【问题标题】:How to (re)name an empty column header in a pandas dataframe without exporting to csv如何(重新)命名熊猫数据框中的空列标题而不导出到csv
【发布时间】:2017-04-27 01:38:44
【问题描述】:

我有一个 pandas 数据框 df1,其中包含一个索引列和一系列未命名的值。我想为未命名的系列指定一个名称。

到目前为止,我知道的唯一方法是使用以下命令导出到df1.csv

df1.to_csv("df1.csv", header = ["Signal"])

然后使用重新导入:

pd.read_csv("df1.csv", sep=",")

但是,这会耗费时间和存储空间。如何在内存中执行此操作?

当我做df2 = df1.rename(columns = {"" : "Signal"}, inplace = True)

我屈服:

AttributeError: "Series" object has no attribute "Signal".

【问题讨论】:

    标签: python csv pandas rename


    【解决方案1】:

    我认为必须删除inplace=True,因为它返回None

    df2 = df1.rename(columns = {"" : "Signal"})
    

    df1.rename(columns = {"" : "Signal"}, inplace = True)
    

    另一种解决方案是按位置指定新名称:

    df.columns.values[0] = 'Signal'
    

    示例:

    df1 = pd.DataFrame({'':[1,2,3],
                       'B':[4,5,6],
                       'C':[7,8,9]})
    
    print (df1)
          B  C
    0  1  4  7
    1  2  5  8
    2  3  6  9
    
    df2 = df1.rename(columns = {"" : "Signal"})
    print (df2)
       Signal  B  C
    0       1  4  7
    1       2  5  8
    2       3  6  9
    

    【讨论】:

    • 当只有一个未命名的列时,这是一种简单的解决方案。当有多个没有名称的列时,解决方案是什么?你如何重命名它们?
    • @VictorCallegari - 然后最简单的是按列表设置新列名称,如df.columns = ['col1','col2','col3','col4']
    • 我想我现在可以这样做,因为我处理的列少于 10 个。但是我想知道当你有很多列并且列出所有列似乎很奇怪时,你如何处理它。
    • @VictorCallegari - 那么解决方案应该是创建列列表,如L = df.columns.tolist(),然后处理您需要的列表,例如L[0] = 'col4', L[5] = 'col5' 最后分配回来,如df.columns = L
    【解决方案2】:

    如果有多个空列,您可以使用它。这将生成一个带有 colsi 的空列(用于列位置)

    df.columns = ["cols_"+str(i) if a == "" else a for i, a in enumerate(df.columns)]
    
    #cols -> just rename the column name just as you want
    #i -> count the column number
    

    【讨论】:

      猜你喜欢
      • 2018-10-25
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-03
      • 1970-01-01
      • 2020-08-10
      • 2022-11-29
      相关资源
      最近更新 更多