在python中使用read_sql时进行数据类型转换

时间:2020-04-19 14:56:35

标签: python pandas

我正在使用read_sql_table()从sql到python获取数据,其中导入后的数据如下:

.NativeName {
  vertical-align: top;
  font-family: 'Open Sans', sans-serif;
  font-size: 16px;
  line-height: 28px;
}

h2,
p {
  margin: 0;
  padding: 0;
}

.row {
  display: flex;
  align-items: flex-end;
}

当我将此表读入数据框时,它已转换为float。由于我需要将这些列作为整数,因此我使用:

<div className="NativeName"> <div class="row"> <h2>Native Name:</h2> <p>{country.nativeName}</p> </div> <div class="row"> <h2>Population:</h2> <p>{country.population}</p> </div> <div class="row"> <h2>Population:</h2> <p>{country.population}</p> </div> <div class="row"> <h2>Region:</h2> <p>{country.region}</p> </div> <div class="row"> <h2>Sub Region:</h2> <p> {country.subregion}</p> </div> <div class="row"> <h2>Capital:</h2> <p> {country.capital}</p> </div> </div>。 (由于存在Nan值,所以使用fillna(0))

但是我也想将所有零(由于fillna(0))转换回column1 column2 column3 1.0 868.0 76225.0 0.0 2767.0 2763.0

如果我尝试df['column2']=df['column2'].fillna(0).astype('int'),则不仅会转换NaN,还会转换df['column2'].replace(0, np.nan, inplace=True)

有关如何在不将zeroes to Nan更改为0的情况下使用read_sql_table将浮点数转换为整数的任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

从pandas版本0.24.0开始,提供了Int64数据类型,该数据类型可用于将NaN s存储在整数数组中。

因此,您可以使用 df['column2'] = df['column2'].astype('Int64')

这会将所有float的值转换为int,同时保持NaN不变。


参考:

Official pandas documentation