未命名列 - 重命名 - pandas
Unnamed columns - rename - pandas
我正在尝试重命名数据框中未命名的列。
此列中第一行的值应成为该列的名称。如果列不包含未命名,则其名称应保持不变。
我尝试这样实现:
for col in columns:
if 'Unnamed' in col:
df = df.rename(columns=df.iloc[0])
break
在这种情况下,每列都已重命名。知道我做错了什么吗?
使用Index.where
with str.contains
,它替换False
,所以反转掩码为~
:
df = pd.DataFrame({'Unnamed 1':['a', 2], 'col':['b',8]})
df.columns = df.columns.where(~df.columns.str.contains('Unnamed'), df.iloc[0])
print (df)
a col
0 a b
1 2 8
您的解决方案可能会通过第一行的循环系列进行更改:
new = []
for col, v in df.iloc[0].items():
if 'Unnamed' in col:
new.append(v)
else:
new.append(col)
df.columns = new
列表理解相同:
df.columns = [v if 'Unnamed' in col else col for col, v in df.iloc[0].items()]
您可以重命名未命名的列,如下所示
df = df.rename({'Unnamed: 0':'NewName1'})
如果有多个未命名列,则根据未命名列的出现使用索引
df = df.rename({'Unnamed: 0':'NewName1','Unnamed: 1':'NewName2'})
我正在尝试重命名数据框中未命名的列。 此列中第一行的值应成为该列的名称。如果列不包含未命名,则其名称应保持不变。
我尝试这样实现:
for col in columns:
if 'Unnamed' in col:
df = df.rename(columns=df.iloc[0])
break
在这种情况下,每列都已重命名。知道我做错了什么吗?
使用Index.where
with str.contains
,它替换False
,所以反转掩码为~
:
df = pd.DataFrame({'Unnamed 1':['a', 2], 'col':['b',8]})
df.columns = df.columns.where(~df.columns.str.contains('Unnamed'), df.iloc[0])
print (df)
a col
0 a b
1 2 8
您的解决方案可能会通过第一行的循环系列进行更改:
new = []
for col, v in df.iloc[0].items():
if 'Unnamed' in col:
new.append(v)
else:
new.append(col)
df.columns = new
列表理解相同:
df.columns = [v if 'Unnamed' in col else col for col, v in df.iloc[0].items()]
您可以重命名未命名的列,如下所示
df = df.rename({'Unnamed: 0':'NewName1'})
如果有多个未命名列,则根据未命名列的出现使用索引
df = df.rename({'Unnamed: 0':'NewName1','Unnamed: 1':'NewName2'})