2017-04-26 151 views
0

我有一個函數傳遞一個DataFrame並使用df.columns屬性。但是,當它傳遞一個只有一列(系列)的DataFrame時會中斷,因爲一系列沒有該屬性。熊貓:數據框和系列的通用列屬性

是否有一個屬性可以同時適用於DataFrame的df.columns系列和dataframe?我看過,但鑑於列屬性甚至沒有顯示在DataFrame文檔(http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html)中,我認爲可能有一些解決方案以部分知識的形式存在。

回答

0

一系列使用.name,我只是測試對象的type傳遞和調用.columns.name酌情:

In [242]: 
df = pd.DataFrame(columns=list('abc')) 
df 

Out[242]: 
Empty DataFrame 
Columns: [a, b, c] 
Index: [] 

In [243]: 
df['a'].name 

Out[243]: 
'a' 

像這樣:

In [245]: 
def func(x): 
    if type(x) is pd.DataFrame: 
     print(x.columns) 
    elif type(x) is pd.Series: 
     print(x.name) 

print(func(df)) 
print(func(df['a'])) 

Index(['a', 'b', 'c'], dtype='object') 
None 
a 
None 
+0

這是有幫助的,但它需要2 + 2n行代碼,與目前我所擁有的n行相比。是否真的沒有其他解決方案? – trob

+0

不是真的,這裏沒有共同的屬性,因爲它們基本上是不同的類型,可以通過執行'df [['a']]'''''''''''''''''''''''''''''''' – EdChum