如何(重新)命名熊猫数据框中的空列标题而不导出到csv

Posted

技术标签:

【中文标题】如何(重新)命名熊猫数据框中的空列标题而不导出到csv【英文标题】:How to (re)name an empty column header in a pandas dataframe without exporting to 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".

【问题讨论】:

【参考方案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

【讨论】:

以上是关于如何(重新)命名熊猫数据框中的空列标题而不导出到csv的主要内容,如果未能解决你的问题,请参考以下文章

如何在熊猫数据框中仅填充选定列的空值? [复制]

Pyspark:如何将现有非空列的元组列表作为数据框中的列值之一返回

PostgreSQL 数据库中表中的空列有多宽? [复制]

如何计算一行中的空列?

如何在熊猫数据框中读取 mongodb 导出的 Json

如何在熊猫数据框中对字符串进行排序或检查等效性而不考虑顺序?