熊猫/ Python数据框 - 在合并逻辑中丢失
我在this excercising上打开数据集。使用dataframes的基本描述:熊猫/ Python数据框 - 在合并逻辑中丢失
有一个包含数据的可得信息:dataavail
Timestamp Availability
201605252300 True
201605252315 False
201605252015 True
有一个包含实际数据weatherdata
SquareID Timestamp Precipitation
25 201605252300 1
的事情是,如果有是否雨,即不是标记为weatherdata.Precipitation
为0
,而是由s暗示从weatherdata
丢失。然而,并非所有丢失的数据都不意味着没有降水,这也意味着技术失败。这就是dataavail
的地方。如果Timestamp
在data
Availability
是False
,这意味着有技术问题,并且没有数据。如果在data
一个Timestamp
的Availability
是True
,这意味着沉淀竟是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
没有任何行,其中Availability
是True
,但Precipitation
是NaN
,这使我相信某些事情在我的想法中不存在。看看原始数据集,我可以清楚地看到没有降水的场合,Avaiability
为True
。所以,我的输出看起来像
Timestamp Availability Precipitation
201605252300 True 1
201605252315 False Nan
凡在我的理解/我要的是
Timestamp Availability Precipitation
201605252300 True 1
201605252315 False NaN
201605252015 True NaN
在这第一步
。 请您指出我思想中的罪魁祸首吗?谢谢!
尝试以下操作:
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
'precip_alldata = pd.merge(dataavail,weatherdata,how ='left')'与'precipitation_alldata = pd.merge(weatherdata,dataavail,how ='right')'字面意思相同。尽管如此,我尝试过,并且产出了相同的产出。 –
我复制了您的确切数据集,其中产生了您正在查看的复制/粘贴输出。如果这不起作用,还有其他事情正在发生。 –
做任何事情的变化,当你做对'= [ '时间戳', '沉淀']'合并? – Khris
@Khris - 由于这两个数据集中都不存在降水,因此这将不起作用。 –