将数据框条目转换为 Python/Pandas 中的浮点数

Converting Data Frame entry to float in Python/Pandas

我正在尝试使用 Python3 & Pandas 将 populatioEst 列中的值保存在浮点变量中, 我有以下 table:

Name populationEst
Amsterdam 872757
Netherlands 17407585

我尝试将两个值分开如下,

populationAM = pops['populationEst'][pops.Name == 'Amsterdam']
populationNL = pops['populationEst'][pops.Name == 'Netherlands']

然而,当我尝试打印出值时,print(populationAM),我得到了这个输出

0    872757
Name: PopulationEstimate2020-01-01, dtype: int64

而且我认为 populationAM 和 populationNL 不是 int 值,因为每当我尝试对它们进行 运行 一些算术运算时,我都得不到所需的值。

例如,我尝试使用此公式计算 populationAM 对 populationNL 的分数

frac = populationAM.astype(float) * 100 / populationNL.astype(float)

我没有得到应该是 5,013659276 的期望输出,但我得到了这个:

0 Nan
1 Nan
Name: PopulationEst, dtype: float64

谁能告诉我哪里出错了,或者我怎样才能将这些值保存在简单的浮点变量中。

这是你想要做的吗?:

populationAM = pops[pops['pops.Name'] == 'Amsterdam']['populationEst']
populationNL = pops[pops['pops.Name'] == 'Netherlands']['populationEst']

这是您要找的吗?

populationAM = pops.loc[pops.Name == 'Amsterdam', 'populationEst'].iloc[0]
populationNL = pops.loc[pops.Name == 'Netherlands', 'populationEst'].iloc[0]
frac = populationAM * 100 / populationNL

这里frac的值是5.013659275539944,而populationAMpopulationNL是各自人口对应的整数(可以看到,这些变量的类型不是计算 frac 的正确值的问题)。在您的代码中,问题是 populationAMpopulationNL 是 pandas 系列,而不是整数; iloc[0] 检索系列第一个位置的值。

也许你试试这个:

    populationAM = pops['populationEst'][pops['Name'] == 'Amsterdam']
    populationNL = pops['populationEst'][pops['Name'] == 'Netherlands']

它将是 dtype: Int。但是你可以很容易地将它变成浮动的。