有没有一种方法可以显示Python中每一列的类型?

时间:2019-03-29 14:41:42

标签: python pandas

我使用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值。

3 个答案:

答案 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}