2017-03-16 59 views
-1

我在this excercising上打开数据集。使用dataframes的基本描述:熊猫/ Python数据框 - 在合并逻辑中丢失

有一个包含数据的可得信息:dataavail

Timestamp Availability 
201605252300 True 
201605252315 False 
201605252015 True 

有一个包含实际数据weatherdata

SquareID Timestamp Precipitation 
25  201605252300 1 

的事情是,如果有是雨,即不是标记为weatherdata.Precipitation0,而是由s暗示从weatherdata丢失。然而,并非所有丢失的数据都不意味着没有降水,这也意味着技术失败。这就是dataavail的地方。如果TimestampdataAvailabilityFalse,这意味着有技术问题,并且没有数据。如果在data一个TimestampAvailabilityTrue,这意味着沉淀竟是0

我想,让我有一个描述的选项的完整频谱,即一个看起来像这样的数据帧这两个dataframes结合:

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 

我们做到这一点,我想将它们合并为

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

在我的理解,根据documentation这应该

权:只使用按键从右框架(SQL:右外连接)

但是,这是我想要的,因为在dataavail有一个为所有可能的时间戳可用性数据。我也明白,如果可用性为真,这还不能用NaN取代NaN。但是,输出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')'与'precipitation_alldata = pd.merge(weatherdata,dataavail,how ='right')'字面意思相同。尽管如此,我尝试过,并且产出了相同的产出。 –

+2

我复制了您的确切数据集,其中产生了您正在查看的复制/粘贴输出。如果这不起作用,还有其他事情正在发生。 –