皆さんこんにちは、
私は数年前から Stackoverflow を探していましたが、とても役に立ったので、以前は登録する必要がありませんでした :)
しかし、今日、Pandas と Quantities (unum または pint の可能性もあります) で Python を使用する際に問題が発生します。私は明確な投稿をするために最善を尽くしますが、それが私の最初の投稿であるため、何かが混乱している場合はお詫びし、見つけた間違いを修正しようとします :)
ソースからデータをインポートし、次のように Pandas データフレームを構築したいと考えています。
import pandas as pd
import quantities as pq
depth = [0.0,1.1,2.0] * pq.m
depth2 = [0,1,1.1,1.5,2] * pq.m
s1 = pd.DataFrame(
{'depth' : [x for x in depth]},
index = depth)
これは与える:
S1=
depth
0.0 0.0 m
1.1 1.1 m
2.0 2.0 m
ここで、データを深さ 2 の値に拡張したいと考えています (明らかに、深さに対して深さを補間するポイントはありませんが、より複雑になる前のテストです)。
s2 = s1.reindex(depth2)
これは与える:
S2=
depth
0.0 0.0 m
1.0 NaN
1.1 1.1 m
1.5 NaN
2.0 2.0 m
これまでのところ問題ありません。
しかし、欠損値を補間しようとすると、次のようになります。
s2['depth'].interpolate(method='values')
次のエラーが発生しました。
C:\Python27\lib\site-packages\numpy\lib\function_base.pyc in interp(x, xp, fp, left, right)
1067 return compiled_interp([x], xp, fp, left, right).item()
1068 else:
-> 1069 return compiled_interp(x, xp, fp, left, right)
1070
1071
TypeError: Cannot cast array data from dtype('O') to dtype('float64') according to the rule 'safe'
numpy からの補間がオブジェクトに対して機能しないことを理解しています。
しかし、単位を削除して欠損値を補間しようとすると、次のように機能します。
s3 = s2['depth'].astype(float).interpolate(method='values')
これは与える:
s3 =
0.0 0
1.0 1
1.1 1.1
1.5 1.5
2.0 2
Name: depth, dtype: object
深度列の単位を戻すにはどうすればよいですか?
ユニットを元に戻すコツが見つかりません...
どんな助けでも大歓迎です。ありがとう