我有一个DataFrame:
df = pd.DataFrame(data=[676, 0, 670, 0, 668], index=['2012-01-31 00:00:00','2012-02-29 00:00:00',
'2012-03-31 00:00:00','2012-04-30 00:00:00',
'2012-05-31 00:00:00'])
df.index.name = "Date"
df.columns = ["Number"]
看起来像:
Number
Date
2012-01-31 00:00:00 676
2012-02-29 00:00:00 0
2012-03-31 00:00:00 670
2012-04-30 00:00:00 0
2012-05-31 00:00:00 668
如何相应地输入(676 + 670)/ 2和(670 + 668)/ 2的第2和第4值?
我可以将值保存为np.array
并将它们排列在数组中,但这很荒谬!
答案 0 :(得分:3)
我使用where
方法并指定将0
替换为np.nan
。在我们将0
指定为NaN
后,我们可以使用fillna
方法。使用ffill
和bfill
,我们会使用相应的上一个和前一个值填充所有NaN
,添加它们,然后除以2.
df.where(df.replace(to_replace=0, value=np.nan),
other=(df.fillna(method='ffill') + df.fillna(method='bfill'))/2)
Number
Date
2012-01-31 00:00:00 676.0
2012-02-29 00:00:00 673.0
2012-03-31 00:00:00 670.0
2012-04-30 00:00:00 669.0
2012-05-31 00:00:00 668.0
答案 1 :(得分:1)
<?php
$i=5;
while ($row= mysqli_fetch_assoc($result)) {
$string="drag5";
echo '<div style= "width: 100px; height: 100px; margin: 10px;border: 3px
solid #FFFFFF; box-shadow: 10px 10px 5px #888888; float: left"
class="boxes"><img height="100px" width="100px" id="<?php echo $string; ?>"
class="dragg" src="data:image/jpeg;base64,'.base64_encode( $row['source']
).'"/></div>';
$i++;
}
?>
答案 2 :(得分:0)
我将使用replace()
方法将0
替换为np.nan
,然后使用方法interpolate()
:
df.replace(to_replace=0, value=np.nan, inplace=True)
df.interpolate(inplace=True)
Number
Date
2012-01-31 00:00:00 676.0
2012-02-29 00:00:00 673.0
2012-03-31 00:00:00 670.0
2012-04-30 00:00:00 669.0
2012-05-31 00:00:00 668.0