熊猫错误类型错误:一元的错误操作数类型~:'float'



我继承了这段代码

dummy_data1 = {
'id': ['1', '2', '3', '4', '5'],
'Feature1': ['A', 'C', 'E', 'G', 'I'],
'Feature2': ['Mouse', 'dog', 'house and parrot', '23', np.NaN],
'dates': ['12/12/2020','12/12/2020','12/12/2020','12/12/2020','12/12/2020']}
df1 = pd.DataFrame(dummy_data1, columns = ['id', 'Feature1', 'Feature2', 'dates'])
df1 = df1.assign(
Feature2=lambda df: df.Feature2.where(
~df.Feature2.str.isnumeric(),
pd.to_numeric(df.Feature2, errors="coerce").astype("Int64"),
)
)

print(df1)

我知道这是因为np。NAN值。代码是做什么的?我的理解是,它试图将String转换为Int,如果它是整数类型。也请告诉我如何克服这个问题。

您可以尝试通过pd.to_numeric()然后填充NaN's:

df['Feature2']=pd.to_numeric(df['Feature2'], errors="coerce").fillna(df['Feature2'])

通过在条件~df.Feature2.str.isnumeric():

中用fillna()填充这些NaN来满足where()条件
df['Feature2']=df['Feature2'].where(~df.Feature2.str.isnumeric().fillna(True),
pd.to_numeric(df.Feature2, errors="coerce").astype("Int64")
)

相关内容

最新更新