我有以下代码:
df = pd.DataFrame({'id': ['A', 'B', 'B', 'C', 'D', 'D' ,'D', 'D', 'D', 'D', 'D'],
'hit': ['hit1', 'hit2', 'hit3','hit4', 'hit5','hit6', 'hit7','hit8', 'hit9','hit10', 'hit11'],
'from': [56,89,240,332,291,287,381,287,373,514, 599],
'to':[102,275,349,480,512,313,426,316,422,600, 602],
'value': [0.00085,0.00034,0.00034,3.40E-15,3.80E-24,0.00098,0.00098,0.0029,0.0029,0.0021, 0.002]})
overlapMask = df.sort_values(by = 'from')\
.groupby('id')\
.apply(lambda x: np.where(x['from'] < x['to'].shift(), 0 , 1).cumsum())\
.reset_index()
df['Mask'] = np.concatenate((overlapMask[0].values))
df.drop_duplicates(subset = ['id','value'], keep = False, inplace = True)
df.sort_values(by = 'value')\
.groupby(['id', 'Mask'])\
.head(1)\
.reset_index()\
.drop(['Mask', 'index'],axis = 1)\
.sort_values(by = 'id')
id hit from to value
2 A hit1 56 102 8.500000e-04
1 C hit4 332 480 3.400000e-15
0 D hit5 291 512 3.800000e-24
3 D hit11 599 602 2.000000e-03
如果该值为空,如何向其中添加默认文本?预先感谢!
答案 0 :(得分:4)
如果要内联处理,可以始终使用三元运算符:
value="<?php echo (!empty(info_username_get_meta( 'your_name' )) ? info_username_get_meta( 'your_name' ) : 'DEFAULT NAME' ; ?>"
或将其拆分并在上面的代码中分配名称:
<?php
$name = (!empty(info_username_get_meta( 'your_name' )) ? info_username_get_meta( 'your_name' ) : 'DEFAULT NAME';
?>
<input class="mt upbb" type="text" name="your_name" id="your_name" value="<?php echo $name; ?>">
答案 1 :(得分:1)
我将扩展上述答案,并以简短的php方式进行操作:
value="<?= info_username_get_meta( 'your_name' ) ?? 'DEFAULT NAME'; ?>"
<?= ?>
替代了<?php echo '' ?>
??
替代了三元运算符,基本上,如果第一个运算符具有要使用的数据,否则它将打印第二个运算符。
答案 2 :(得分:1)
如果您使用的是php 7+,则可以执行以下操作:
<input class="mt upbb" type="text" name="your_name" id="your_name" value="<?php echo (info_username_get_meta( 'your_name' ) ?? '') ?>">
否则,您可以使用:
<input class="mt upbb" type="text" name="your_name" id="your_name" value="<?php echo (!empty($value = info_username_get_meta( 'your_name' )) ? $value : '') ?>">
答案 3 :(得分:1)
如果info_username_get_meta
函数是您的函数,则可以对其进行修改以将默认值用作第二个参数,并在第一个参数没有找到任何内容时返回该值
function info_username_get_meta($username, $default)
{
$meta = // whatever happens with $username to get meta
return $meta ?: $default;
}
我认为这样会使演示代码更清晰一些。
如果您无权使用该功能,则可以使用此表达式
<?php echo info_username_get_meta( 'your_name' ) ?: 'default value'; ?>
?:
运算符是简化的三元运算符。除非它为false,否则它将评估为左侧值,在这种情况下,它将使用右侧值。从PHP 5.3开始,此三元的缩短版本可用。
如果函数返回的“空”值为??
,则空合并运算符(null
)也将起作用。它专门处理空值,因此不适用于空字符串或其他虚假值。