你可以使用以下两种方法来删除pandas DataFrame中列名中含有 "Unnamed "的列。
方法1:导入数据时删除未命名的列
df = pd.read_csv('my_data.csv', index_col=0)
方法2:导入数据后删除无名列
df = df.loc[:, ~df.columns.str.contains('^Unnamed')]
下面的例子展示了如何在实践中使用每种方法。
例1:导入数据时删除未命名的列
假设我们创建了一个简单的pandas DataFrame并将其导出到CSV文件:
import pandas as pd
#create DataFrame
df1 = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E', 'F'],
'points': [4, 4, 6, 8, 9, 5],
'rebounds': [12, 7, 8, 8, 5, 11]})
#view DataFrame
print(df1)
team points rebounds
0 A 4 12
1 B 4 7
2 C 6 8
3 D 8 8
4 E 9 5
5 F 5 11
#export DataFrame to CSV file
df1.to_csv('my_data.csv')
现在当我们试图将该文件读入pandas DataFrame时,第一列的名字是Unnamed: 0
#import CSV file
df2 = pd.read_csv('my_data.csv')
#view DataFrame
print(df2)
Unnamed: 0 team points rebounds
0 0 A 4 12
1 1 B 4 7
2 2 C 6 8
3 3 D 8 8
4 4 E 9 5
5 5 F 5 11
为了避免这种情况,我们可以指定 index_col=0来告诉pandas,第一列实际上是索引列:
#import CSV file
df2 = pd.read_csv('my_data.csv', index_col=0)
#view DataFrame
print(df2)
team points rebounds
0 A 4 12
1 B 4 7
2 C 6 8
3 D 8 8
4 E 9 5
5 F 5 11
例2:导入数据后删除未命名列
假设我们创建了一个简单的pandas DataFrame,并将其导出到一个CSV文件:
import pandas as pd
#create DataFrame
df1 = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E', 'F'],
'points': [4, 4, 6, 8, 9, 5],
'rebounds': [12, 7, 8, 8, 5, 11]})
#export DataFrame to CSV file
df1.to_csv('my_data.csv')
现在假设我们把这个文件导入到一个pandas DataFrame中:
#import CSV file
df2 = pd.read_csv('my_data.csv')
#view DataFrame
print(df2)
Unnamed: 0 team points rebounds
0 0 A 4 12
1 1 B 4 7
2 2 C 6 8
3 3 D 8 8
4 4 E 9 5
5 5 F 5 11
要删除名称中包含 "Unnamed "的列,我们可以使用以下语法:
#drop any column that contains "Unnamed" in column name
df2 = df2.loc[:, ~df2.columns.str.contains('^Unnamed')]
#view updated DataFrame
print(df2)
team points rebounds
0 A 4 12
1 B 4 7
2 C 6 8
3 D 8 8
4 E 9 5
5 F 5 11
注意,"Unnamed: 0 "列已经从DataFrame中删除了。
其他资源
下面的教程解释了如何在pandas中执行其他常见任务: