如何将pandas列转换为for循环中的double?

时间:2018-01-18 19:31:51

标签: python pandas

我有一个名为df10的pandas数据框。

cols10 = list(df10.columns)

我想将数据类型更改为double,其中列名称以"m_"

开头
for param in cols10:
    if param.startswith("m_"):
        df10[[param]] = df10[[param]].apply(pd.to_double)

但是,我收到此错误:

AttributeError: 'module' object has no attribute 'to_double'

3 个答案:

答案 0 :(得分:2)

pandas中不存在函数for col in cols10: if col.startswith('m_'): df[col] = df[col].astype(np.float64) # or np.float32 or np.float16 。 pandas数据类型基本上是numpy data types

我假设你的意思是float64 by double

你可以让numpy为你决定精确度

<span id="mobileInputContainer">
    <font color="#008080">Mobile: </font></b><font id="mobileInput">Default </font><br>
</span>

或自己指定精度

if (mobile.length < 1) {
    document.getElementById('mobileInputContainer').style.display = 'none';
}

答案 1 :(得分:2)

你可以不用循环来做到这一点,

reqd_cols = df10.columns[df10.columns.str.startswith('m_')]
df10[reqd_cols] = df10[reqd_cols].astype('float64')

答案 2 :(得分:0)

使用'value'=>array_key($chosen_systems); 函数将列转换为astype()(python没有类似C的float类型。

double

这种方法比使用cols10 = [c for c in df10 if c.startswith("m_")] df10.loc[:, cols10 ] = df10.loc[:, cols10].astype(float) 循环更快,但是如果你坚持循环遍历列:

for

有关浮点数here的更多信息:

  

浮点数通常在C

中使用double实现