2016-02-28 35 views
-1

我正試圖在熊貓數據框中搜索匹配。我發現結果不一致,或者我使用了錯誤的代碼類型。我使用的in命令並不總是一致的。如果我比較值(請參閱示例)它的作品。 in命令有問題嗎?在熊貓數據框中搜索值會返回不一致的結果

代碼示例:

import pandas as pd 
report = pd.DataFrame(columns = (['col1','col2'])) 
report 
i = 0 
while i < 100: 
    a = str(i) 
    addthis = pd.Series({'col1':a,'col2':'AG100'}) 
    report = report.append(addthis,ignore_index=True) 
    i = i + 1 
###this will find a match but not 100 of the time% 
i = 0 
while i < len(report): 
    if str(i) in str(report[0:len(report)]): 
     print('found match on ',i) 
    else: 
     print('No match found on ',i) 
    i = i + 1 
###this will find a match 100of the time%  
i = 0 
while i < len(report): 
    if str(i) == report.ix[i,0]: 
     print('found match on ',i) 
    else: 
     print('No match found on ',i) 
    i = i + 1 
+0

你應該嘗試使用通過數據框更Python循環方式,如'在report.iterrows)行(',而不是跟蹤櫃檯 – Jezzamon

回答

0

您正在運行到的問題,因爲你將數據框的部分爲一個字符串。如果您查看在使用str(report[0:len(report)])時打印的內容,您會發現它不僅返回該數據幀的值,而且還返回該數據幀的可讀描述。大熊貓縮短了這個輸出,所以在終端打印時它並不是真的很長。

因此,這不是in聲明中的錯誤。如果您需要這樣做,請使用問題中的第二段代碼。

對於參考,str(report[0:len(report)])輸出看起來是這樣的:

col1 col2 
0  0 AG100 
1  1 AG100 
2  2 AG100 
3  3 AG100 
4  4 AG100 
5  5 AG100 
6  6 AG100 
7  7 AG100 
8  8 AG100 
9  9 AG100 
10 10 AG100 
11 11 AG100 
12 12 AG100 
13 13 AG100 
14 14 AG100 
15 15 AG100 
16 16 AG100 
17 17 AG100 
18 18 AG100 
19 19 AG100 
20 20 AG100 
21 21 AG100 
22 22 AG100 
23 23 AG100 
24 24 AG100 
25 25 AG100 
26 26 AG100 
27 27 AG100 
28 28 AG100 
29 29 AG100 
.. ... ... 
70 70 AG100 
71 71 AG100 
72 72 AG100 
73 73 AG100 
74 74 AG100 
75 75 AG100 
76 76 AG100 
77 77 AG100 
78 78 AG100 
79 79 AG100 
80 80 AG100 
81 81 AG100 
82 82 AG100 
83 83 AG100 
84 84 AG100 
85 85 AG100 
86 86 AG100 
87 87 AG100 
88 88 AG100 
89 89 AG100 
90 90 AG100 
91 91 AG100 
92 92 AG100 
93 93 AG100 
94 94 AG100 
95 95 AG100 
96 96 AG100 
97 97 AG100 
98 98 AG100 
99 99 AG100 

[100 rows x 2 columns] 
相關問題