2016-09-09 7 views
0

これは本当にばかげた質問かもしれないが、私はちょっと固まっている。私は3列のデータを持っています。列Cは、列A /列Bの除算の結果です。この単純な演算の結果は、0から15までの実数を返します。列Aのどの値を計算したいのですが、列Cの値は複数(1から2、3まで)。すなわちPythonで整数の除算結果が変化する値を見つける

A    B    C=A/B 

0.0  894.57   0.0 
1.0  894.579620994 0.00111784348372 
11.0 894.579622195 0.0122962783044 
21.0 894.579625847 0.0234747130309 
30.0 894.579632967 0.0335353040629 
40.0 894.57964499 0.0447137381496 
...  ...   ... 
881.0 894.579705447 0.984820016188 
891.0 894.579703891 0.995998451703 
901.0 894.57970588 1.00717688326 
911.0 894.579707084 1.01835531567 
...  ...    ... 
1781.0 894.579658537 1.99087916096 
1791.0 894.57965582 2.00205760141 
1801.0 894.579658252 2.01323603034 

私が言いたいのは、Cの値が整数を変更するAの値を見つけることです。この場合、値が0.99から1に変わる値になるので、901になります。 1から2までは1791となります。 アイデアは大歓迎です。私は残差(%)を見つけることができたと思ったが、どうやったらどうなるのだろうか。

+0

?これはデータベースかcsvファイルか?例えば、C列の整数部分を取り出し、 'i'と等しいかどうかをチェックし、それが' i'( 'i + = 1')を反復し続けることで行うことができます。 –

+0

これまでに何を試しましたか? – Humbalan

答えて

0

多分これは役立つだろう:

A = 1  # adapt this to your data 
B = 894.57 # adapt this to your data 

lastInt = -1 
for i in range(0,1000): 
    C = A/B 
    newInt = int(C) 
    if newInt!=lastInt: 
     print "CHANGE: from {} to {}. A is {}".format(lastInt, newInt, A) 
     lastInt = newInt 
    A += 10 # adapt this to your data 
0

あなたが%を試してみましたので、あなたがデータを取得する方法を知っていると仮定すると、この作業は、データが文字列ではないことはないだろうと仮定すると? if文をインクリメントするチェッカーで単純なif文?

number_to_check = 1 
if c >= number_to_check: 
    number_to_check += 1 
    print(a) 
2

おそらくエレガントな解決策ではありませんが、データの整合性があると仮定して、各エントリの冒頭で数字を比較するだけでは不十分です。これは非常に簡単になります。以下の例では、あなたのデータが空白で区切られ(あなたの投稿のように)、「データ」というファイルに保存されているものとします。


プログラム:

data = open("data", "r") 
last = "0" 
for element in data: 
    a, b, c = element.split() 
    if c[0] != last: 
     print(a) 
     last = c[0] 

出力:このデータが保存されている

901.0 
1791.0 
関連する問題