我使用dtype
来显示列的类型,但是大多数类型将显示为object
,并且您需要使用type()
方法进行单独检查才能知道,例如,如果它确实是str
。
是否有更好的方法从一开始就获得str或numpy.int64
而不必单独检查它们?
df_08.dtypes
>>>model object
displ float64
cyl object
trans object
drive object
fuel object
veh_class object
air_pollution_score object
city_mpg object
hwy_mpg object
cmb_mpg object
greenhouse_gas_score object
smartway object
dtype: object
type(df_18['air_pollution_score'][1])
>>> numpy.int64
并且数据框中没有nan值。
答案 0 :(得分:0)
只需将<!DOCTYPE html>
<html>
<body>
<h2>Regex to replace 0x1B character (ASCII escape character)</h2>
<button id="btn">Replace</button>
<p id="demo">Be the change that you wish to see in the world. ― Mahatma Gandhi</p>
<script>
var btn = document.getElementById("btn");
btn.onclick = function() {
var str = document.getElementById("demo").innerHTML;
var txt = str.replace(/0x1B/g,'');
document.getElementById("demo").innerHTML = txt;
}
</script>
</body>
</html>
与applymap
一起使用,并且当列类型为object时,它将具有change,它是混合数据类型,如果仅检查列中的位置1,则可能会得到整列输出错误
type
答案 1 :(得分:0)
dtypes是正确的答案,但似乎您的列中混合了dtypes。一旦pandas看到其中包含多种类型的列,它将自动将其强制转换为对象dtype。
您可以发布df_18.air_pollution_score.apply(type).unique()
的结果吗?
答案 2 :(得分:0)
问题可能是您在这些“对象”列中有空值。熊猫将空值存储为浮点数“ nan”。如果将它与其他类型(例如ints或字符串)混合使用,则整个列将被标记为具有“对象”的dtype(这是未知的,因为没有其他单个dtype应用于整个列)。
要对此进行检查,请查看以下内容的输出:
{type(val) for val in df_18['air_pollution_score']}
您可以使用以下技巧获得所有非空对象的dtype:
{col: df_18.loc[~pd.isnull(df_18[col]), col].dtype for col in df_18}
如果仍然不起作用,则可以单独检查所有类型:
{col: set(df.loc[~pd.isnull(df[col]), col].apply(type).drop_duplicates()) for col in df}