如何(重新)在pandas数据帧中命名空列标题而不导出到csv

sud*_*nym 3 python csv rename pandas

我有一个df1带有索引列和未命名的值系列的pandas数据帧.我想为未命名的系列指定一个名称.

到目前为止我知道的唯一方法是导出到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".

jez*_*ael 7

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

df2 = df1.rename(columns = {"" : "Signal"})
Run Code Online (Sandbox Code Playgroud)
df1.rename(columns = {"" : "Signal"}, inplace = True)
Run Code Online (Sandbox Code Playgroud)

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

df.columns.values[0] = 'Signal'
Run Code Online (Sandbox Code Playgroud)

样品:

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
Run Code Online (Sandbox Code Playgroud)

  • 当只有一个未命名列时,这是一种简单的解决方案。当有多于一列没有名称时,解决方案是什么?你如何重命名它们? (2认同)
  • @VictorCallegari - 然后最简单的是通过列表设置新列名称,如`df.columns = ['col1','col2','col3','col4']`。 (2认同)
  • @VictorCallegari - 那么解决方案应该是创建列列表,如“L = df.columns.tolist()”,然后根据需要处理列表,例如“L[0]”=“col4”,“L[5]=” col5'` 并最后分配回来,如“df.columns = L” (2认同)