以下是我在excel表中的数据示例。
A B C
1 2 3
4 5 6
我正在尝试使用以下代码获取列名称:
p1 = list(df1t.columns.values)
输出就像这样
[A, B, C, 'Unnamed: 3', 'unnamed 4', 'unnamed 5', .....]
我检查了excel表,只有三列名为A,B和C.其他列是空白的。有什么建议吗?
答案 0 :(得分:1)
有问题,有些单元格不是空的,但包含一些空格。
如果需要带有过滤Unnamed
的列名:
cols = [col for col in df if not col.startswith('Unnamed:')]
print (cols)
['A', 'B', 'C']
file示例:
df = pd.read_excel('https://dl.dropboxusercontent.com/u/84444599/file_unnamed_cols.xlsx')
print (df)
A B C Unnamed: 3 Unnamed: 4 Unnamed: 5 Unnamed: 6 Unnamed: 7
0 4.0 6.0 8.0 NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN
cols = [col for col in df if not col.startswith('Unnamed:')]
print (cols)
['A', 'B', 'C']
另一种解决方案:
cols = df.columns[~df.columns.str.startswith('Unnamed:')]
print (cols)
Index(['A', 'B', 'C'], dtype='object')
并且要返回cols使用的所有列:
print (df[cols])
A B C
0 4.0 6.0 8.0
1 NaN NaN NaN
2 NaN NaN NaN
3 NaN NaN NaN
如有必要,请删除所有NaN
行:
print (df[cols].dropna(how='all'))
A B C
0 4.0 6.0 8.0
答案 1 :(得分:0)
无论如何,任何人都会遇到这个问题:如果 Excel 工作表包含用背景颜色格式化的空单元格,也会出现此问题:
import pandas as pd
df1t = pd.read_excel('test.xlsx')
print(df1t)
A B C Unnamed: 3
0 1 2 3 NaN
1 4 5 6 NaN
一种选择是删除“未命名”列,如下所述:
https://stackoverflow.com/a/44272830/11826257
df1t = df1t[df1t.columns.drop(list(df1t.filter(regex='Unnamed:')))]
print(df1t)
A B C
0 1 2 3
1 4 5 6