Pandas列出了对列而不是行的理解

时间:2017-11-29 11:55:32

标签: python-3.x pandas type-conversion list-comprehension

我正在尝试将以下循环转换为列表理解:

# 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类型的仅有值的列,我可以采用不同的方法。

2 个答案:

答案 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'))