檢查

2017-08-11 69 views
2

我要檢查,如果在數據幀存在一排,下面是我的代碼:檢查

df = pd.read_csv('dbo.Access_Stat_all.csv',error_bad_lines=False, usecols=['Name','Format','Resource_ID','Number']) 
df1 = df[df['Resource_ID'] == 30957] 
df1 = df1[['Format','Name','Number']] 
df1 = df1.groupby(['Format','Name'], as_index=True).last() 
pd.options.display.float_format = '{:,.0f}'.format 
df1 = df1.unstack() 
df1.columns = df1.columns.droplevel() 
if 'entry' in df1: 
    df2 = df1[1:4].sum(axis=0) 
else: 
    df2 = df1[0:3].sum(axis=0) 
df2.name = 'sum' 
df2 = df1.append(df2) 
print(df2) 

這是輸出:

Name Apr 2013 Apr 2014 Apr 2015 Apr 2016 Apr 2017 Aug 2010 Aug 2013 
Format                   

entry   0   0   0   1   4   1   0 
pdf   13  12   4  23   7   1   9 
sum   13  12   4  24  11   2   9 

是否如果「條目'在df2:只檢查'條目'是否存在列?我想,情況一定是這樣。我們可以看到「入口」這一行存在,但我們仍然處於其他條件下(如果它在2016年4月的報表總和爲23時已經降落)。

如果我檢查它沒有「入口」行的文件,它會再次出現在else語句中(如我所期望的那樣),所以我認爲它總是進入else條件。

如何檢查熊貓是否存在一行?

+3

'在df.index'或'df.index.contains( '項目')' '項目'? – Zero

+0

謝謝,這是我需要做的 – Uttam

回答

4

我認爲你需要比較指數值 - 輸出是TrueFalse numpy數組。 而對於標需要any - 檢查至少一個Trueall進行檢查,如果所有值都True S:

(df.index == 'entry').any() 

(df.index == 'entry').all() 

從評論的另一個解決方案的John Galt

'entry' in df.index 

如果需要檢查子:

df.index.str.contains('en').any() 

Sam PLE

df = pd.DataFrame({'Apr 2013':[1,2,3]}, index=['entry','pdf','sum']) 
print(df) 
     Apr 2013 
entry   1 
pdf   2 
sum   3 

print (df.index == 'entry') 
[ True False False] 

print ((df.index == 'entry').any()) 
True 
print ((df.index == 'entry').all()) 
False 

#check columns values 
print ('entry' in df) 
False 
#same as explicitely call columns (better readability) 
print ('entry' in df.columns) 
False 
#check index values 
print ('entry' in df.index) 
True 
#check columns values 
print ('Apr 2013' in df) 
True 
#check columns values 
print ('Apr 2013' in df.columns) 
True 

df = pd.DataFrame({'Apr 2013':[1,2,3]}, index=['entry','entry','entry']) 
print(df) 
     Apr 2013 
entry   1 
entry   2 
entry   3 

print (df.index == 'entry') 
[ True True True] 

print ((df.index == 'entry').any()) 
True 
print ((df.index == 'entry').all()) 
True 
+1

這就是你如何回答我的意見(與例子是)+1 –

+0

@AntonvBR - 謝謝。 – jezrael

+0

雖然一件小事,另一個有趣的事實是,你「遺漏」的是,熊貓是建立在numpy上,如果你可以這麼說,那就是爲什麼我們可以做這些比較,例如** df.index ==「entry」 **其實是一個numpy.ndarray。 –