我有一个名为 .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)
该功能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)
你可以在没有循环的情况下做到这一点,
reqd_cols = df10.columns[df10.columns.str.startswith('m_')]
df10[reqd_cols] = df10[reqd_cols].astype('float64')
Run Code Online (Sandbox Code Playgroud)
使用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来实现