2016-04-07 295 views
0

我有一個數據幀,我試圖通過列「#Inc」來查看是否有數字4.如果有,我想打印整行。我該怎麼做呢?數據幀列數據 - 熊貓 - python

我嘗試這樣做,失敗(錯誤是 - >只喜歡對象列表允許被傳遞到ISIN(),你通過一個int):

if df.loc[df['#Inc'].isin(4)] is true: 
    print 'WIN' 

else: 
    print 'FAILURE!' 

這裏是輸出:

OUTPUT:

月平均公司#Inc Avg.DeC#Dec

0 JAN 0.091454 0.000000 1 0

2月1日0.008307 1 -0.030809 1

3月2日0 0.000000 -0.027193 2

4月3日0.008845 1 -0.035857 1

4可以0.000000 0 -0.076321 2

6月5日0.033715 1 -0.025242 1

7月6日0.016775 1 -0.028849 1

8月7日0.079845 1 -0.033116 1

9月8日0.000000 0 -0.042201 2

10月9日0.044914 1 -0.049798 1

11月10日0 0.000000 -0.148163 2

12月11日0.039241 1 -0.024030 1

回答

1

你可以簡單地應用所需的過濾器,而不是如果你在一個殼工作(無論是IPython的或正常的Python殼)分配結果:

In [27]: df[df[' #Inc'] == 4] 
Out[27]: 
    Month Avg Inc. #Inc Avg.Dec #Dec 
1 FEB 0.008307  4 -0.030809  1 
3 APR 0.008845  4 -0.035857  1 

您可以將過濾器的結果對以後的使用:

In [35]: interesting_results = df[df[' #Inc'] == 4] 
0

想你想一些簡單的如下:

df = pd.DataFrame({'#Inc': [1,2,3,4,5], 'another_col': ['x','y','z','a','b']})  
for _, row in df.iterrows(): 
    if row['#Inc'] == 4: 
     print(row) 

上面發生了什麼是我們使用g由iterrows創建的縮放器循環遍歷數據框中的所有行,然後在該行中的某個特定鍵與您正在查找的值相等時打印。

+0

將它的行解包爲一個序列並不是很有效,然後比較每個元素。 http://stackoverflow.com/a/10739432/492620 – Oz123

0

錯誤是因爲方法isin()不接受單個字符串int,float值作爲輸入參數。

0.18.x,0.19.x熊貓文檔版本中提到了類型iterable,pandas dataframe,series或dictionary的輸入參數作爲方法isin()的輸入參數。 http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.isin.html

0.17。x版本的熊貓 方法isin()的文檔說,它將輸入值作爲列表,即使您有單個字符串,然後將該字符串添加到列表中,然後調用isin()方法。 http://pandas.pydata.org/pandas-docs/version/0.17.1/generated/pandas.Series.isin.html

我希望這會有所幫助。 乾杯!