2017-03-16 4 views
-1

私はthisオープンデータセットでエクササイズしています。使用済みのデータフレームの基本的な説明:パンダ/ Pythonデータフレーム - マージロジックで失われました

データの可用性についての情報が含まれている1があります:dataavail

Timestamp Availability 
201605252300 True 
201605252315 False 
201605252015 True 

事があればということであり、実際のデータweatherdata

SquareID Timestamp Precipitation 
25  201605252300 1 

が含まれている1がありますなし雨、つまりではなく、weatherdata.Precipitationであるであるが、0であるが、s weatherdataから欠落していることを示します。しかし、失われたデータのすべてが降水量を意味するわけではなく、技術的な失敗を意味する可能性もあります。それでdataavailが届きます。Timestampdataの場合、AvailabilityFalseです。これは技術的な問題があり、データがないことを意味します。 dataTimestampためAvailabilityTrueであれば、それは降水量が実際に私はオプションの完全なスペクトル、次のようになり、すなわち1を説明データフレームを持っているように、これら二つのデータフレームを組み合わせたい0

たことを意味します:これを達成するために今すぐ

Timestamp Availability Precipitation 
201605252300 True   1   #if the availability is True, and there's rain, data can be pulled from weatherdata 
201605252315 False  NaN   #if there's a technical issue, data can stay NaN for further imputation 
201605252015 True   0   #if the data's availability is True, but there's no entry fot it in weatherdata, it should be 0 

、私はdocumentationこれによると、私の理解では

precip_alldata = pd.merge(weatherdata, dataavail, on=['Timestamp'], how='right') 

としてそれらをマージしようとしています

右必要があります。右側のフレームからキーのみを使用(SQL:右の外部結合)

しかしdataavailにすべての可能なタイムスタンプの可用性データがありますので、それは、私が欲しいものです。また、これは、可用性がTrueの場合にNaNを0に置き換えていないことも理解しています。しかし、出力precip_alldataにはすべての行がありません。AvailabilityTrueですが、PrecipitationNaNです。これは私の考えでは何かが間違っていると信じています。生データセットを見ると、降水がなく、AvaiabilityTrueである場合を明確に見ることができます。だから私の出力は、私の理解で

Timestamp Availability Precipitation 
201605252300 True   1 
201605252315 False  Nan 

のようになります/私が欲しいのは、この最初のステップで

Timestamp Availability Precipitation 
201605252300 True   1 
201605252315 False  NaN 
201605252015 True   NaN 

です。 私の考えで、犯人を指摘してください。ありがとうございました!

+0

は何も変更していますか? – Khris

+0

@Khris - 両方のデータセットに降水量が存在しないため、これは機能しません。 –

答えて

-1

次のことを試してみてください。

precip_alldata = pd.merge(dataavail, weatherdata, how='left') 
precip_alldata[['TimeStamp', 'Availability', 'Precipitation']] 

左を使用するには、左のデータフレーム(dataavail)からあなたにすべての行を与えるに参加します。

出力:

あなたは `=上の[ 'タイムスタンプ'、 '雨']`とのマージを行う際に
  Timestamp Availability Precipitation 
0 201605252300   True   1.0 
1 201605252315  False   NaN 
2 201605252015   True   NaN 
+0

'precip_alldata = pd.merge(dataavail、weatherdata、how = 'left')'は文字通り 'precip_alldata = pd.merge(weatherdata、dataavail、how = 'right')'と同じです。それにもかかわらず、私は試してみると同じ出力が得られます。 –

+2

上記の正確なデータセットを複製して、あなたが見ているコピー/貼り付け出力を得ました。これがうまくいかないと、何か他のことが起こっている。 –

関連する問題