如何(重新)命名熊猫数据框中的空列标题而不导出到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】:
如果有多个空列,您可以使用它。这将生成一个带有 cols 和 i 的空列(用于列位置)
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的主要内容,如果未能解决你的问题,请参考以下文章