2016-02-28 38 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] 
相关问题