[英]pandas returning the unnamed columns
以下是我在 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。其他列是空白的。 有什么建議嗎?
有一些單元格不是空的但包含一些空格的問題。
如果需要過濾Unnamed
的列名:
cols = [col for col in df if not col.startswith('Unnamed:')]
print (cols)
['A', 'B', 'C']
帶文件的樣本:
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')
對於按列返回所有列,請使用:
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
以防萬一有人偶然發現這個問題:如果 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.