2017-06-24 15 views
1

以下は、Excelシートのデータの例です。私は次のコードを使用して列名を取得しようとしています名前のない列を返すパンダ

A B C 
1 2 3 
4 5 6 

p1 = list(df1t.columns.values) 

出力は、私はExcelシートを確認し、この

[A, B, C, 'Unnamed: 3', 'unnamed 4', 'unnamed 5', .....] 

のようなものですが、唯一の3つの列がありA、B、およびCという名前です。他の列は空白です。なにか提案を?

+0

'' DataFrame'をdf1t'ていますか? – danche

+1

Excelの別のセルに空白があるようです。 – jezrael

+0

はい、これはコードです:df1t = pd.read_excel( "/ Users/mz/Desktop/ef_rated_1.xlsx") – Mary

答えて

0

一部のセルは空ではありませんが、いくつかの空白が含まれています。

フィルタリングUnnamedと列名が必要な場合:使用COLSにより

cols = df.columns[~df.columns.str.startswith('Unnamed:')] 
print (cols) 
Index(['A', 'B', 'C'], dtype='object') 

とリターンのためのすべての列:file

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'] 

別の解決策を

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 
+0

ありがとうございます。 2つのExcelシートを同じ列名でマージします。したがって、 "名前のない"列を持つシートの場合は、最初に "名前のない"列を削除する必要があります。コードをcols = [col for dfでcol.startswith( '無名:')]に変更してからドロップしますか? – Mary

+0

私はドロップが必要ではなく、 'cols = [col for df in col.startswith( '無名:')]'と 'pd.merge(df1、df2 [cols]) ' – jezrael

+0

ありがとうございます – Mary

関連する問題