簡體   English   中英

熊貓返回未命名的列

[英]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 工作表包含用背景顏色格式化的空單元格,也會出現問題:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM