如何将 Pandas 列转换为 for 循环的两倍?

Cod*_*ody 4 python pandas

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

cols10 = list(df10.columns)
Run Code Online (Sandbox Code Playgroud)

我想将数据类型更改double为列名开头的位置"m_"

for param in cols10:
    if param.startswith("m_"):
        df10[[param]] = df10[[param]].apply(pd.to_double)
Run Code Online (Sandbox Code Playgroud)

但是,我收到此错误:

AttributeError: 'module' object has no attribute 'to_double'
Run Code Online (Sandbox Code Playgroud)

Hal*_*Ali 6

该功能to_double在熊猫中不存在。pandas 数据类型本质上是numpy 数据类型

我假设你的意思是 float64 by double

你可以让 numpy 为你决定精度

for col in cols10:
    if col.startswith('m_'):
        df[col] = df[col].astype(float)
Run Code Online (Sandbox Code Playgroud)

或自己指定精度

for col in cols10:
    if col.startswith('m_'):
        df[col] = df[col].astype(np.float64) # or np.float32 or np.float16
Run Code Online (Sandbox Code Playgroud)


Vai*_*ali 5

你可以在没有循环的情况下做到这一点,

reqd_cols = df10.columns[df10.columns.str.startswith('m_')]
df10[reqd_cols] = df10[reqd_cols].astype('float64')
Run Code Online (Sandbox Code Playgroud)


pau*_*ult 0

使用astype()函数将列转换为float(python 没有double像 C 这样的类型)。

cols10 = [c for c in df10 if c.startswith("m_")]
df10.loc[:, cols10 ] = df10.loc[:, cols10].astype(float)
Run Code Online (Sandbox Code Playgroud)

这种方法比使用循环更快for,但如果您坚持对列进行循环:

cols10 = [c for c in df10 if c.startswith("m_")]
for param in cols10:
    df10[param] = df10[param].astype(float)
Run Code Online (Sandbox Code Playgroud)

有关浮点数的更多信息,请参见此处

C中浮点数通常使用double来实现