我正在尝试将以下循环转换为列表理解:
# convert integer-only valued columns from type float to type int
for col in df:
if sum(df[col]%1) == 0:
df[col]=df[col].astype(int)
我似乎无法使此语法正常工作。这是我到目前为止所尝试的:
new_df = pd.DataFrame([df[col].astype(int) if sum(df[col]%1)==0 else df[col] for col in df])
这似乎转换了我的数据框,而不是实际转换类型。有人请帮帮我吗?此外,如果有一种更惯用的方法将从int转换为int类型的仅有值的列,我可以采用不同的方法。
答案 0 :(得分:2)
为什么我们不能使用x_regr_constant = Lambda(
lambda x: K.stop_gradient(x),
output_shape=notNecessaryWithTensorflow
)(x_regr)
和np.where
来映射dtypes,即
dict
答案 1 :(得分:2)
您可以使用concat
:
df = pd.concat([df[col].astype(int) if sum(df[col]%1)==0 else df[col] for col in df], 1)
或者:
df = df.astype(df.dtypes.mask((df%1==0).all(), 'int'))