我有一个类似以下的系列:
<?php
function getDB(){
static $db;
if($db instanceof PDO){
return $db;
}
require_once CONFIG_DIR.'/database.php';
$dsn = sprintf("myqsl:host=%s;dbname=%s;charset=%s",DB_HOST,DB_DATABASE,DB_CHARSET);
$db = new PDO($dsn); // ← HERE
return $db;
}
我想将所有负值都替换为0,但是我只能找到适用于数据框的方法。
我尝试使用s = pd.Series({'val1': 'a', 'val2': 'b', 'other_val1': 1, 'other_val2': -1, 'other_val3': 3, 'other_val4': -1.5})
val1 a
val2 b
other_val1 1
other_val2 0
other_val3 3
other_val4 -1.5
dtype: object
和s.mask
,但是混合类型存在问题。
预期输出为
s.loc
答案 0 :(得分:2)
使用pd.to_numeric
+ Series.lt
创建一个布尔掩码,然后使用此mask
替换系列中的0
值:
mask = pd.to_numeric(s, errors='coerce').lt(0)
s.loc[mask] = 0
结果:
val1 a
val2 b
other_val1 1
other_val2 0
other_val3 3
other_val4 0
dtype: object
答案 1 :(得分:0)
您可以使用字典理解:
series = {'val1': 'a', 'val2': 'b', 'other_val1': 1, 'other_val2': -1, 'other_val3': 3, 'other_val4': -1.5}
replaced_series = {k:0 if str(v).lstrip('-+').isdigit() and int(v)<0 else v for (k,v) in series.items()}