使用pandas数据框,其中一列,比如col1有浮点值,我试图用预定义的常量(比如A)将每个值除以,然后将结果保存为整数值。 / p>
A = 0.5
以下是 col1
中的数据df["col1"]
0 0.800000
1 0.883333
2 0.883333
3 1.000000
4 1.000000
5 1.300000
6 1.300000
7 1.500000
8 1.500000
9 2.000000
10 2.000000
11 2.500000
12 2.500000
申请后
df["new_col"] = (df["col1"] / A)
它给出了
0 1.600000
1 1.766667
2 1.766667
3 2.000000
4 2.000000
5 2.600000
6 2.600000
7 3.000000
8 3.000000
9 4.000000
10 4.000000
11 5.000000
12 5.000000
这很好,但只要我将 .astype(int)添加到上面的代码中,就可以在索引9和10 处观察到值 3 和 3 ,而它应分别为4和4。
df["new_col"] = (df["col1"] / A).astype(int)
df["new_col"]
0 1
1 1
2 1
3 2
4 2
5 2
6 2
7 3
8 3
9 3
10 3
11 5
12 5
我试图获得结果的其他方式是
df["new_col"] = math.floor(df["col1"] / A )
和
df["new_col"] = int( df["col1"] / A)
这两个都给我TypeError说:
TypeError:无法将系列转换为类'float'和 TypeError:无法将系列分别转换为类'int'。
请告诉我如何解决上述问题。
答案 0 :(得分:1)
你可能有舍入问题。你在内部看到的4.000000
可能是3.9999999999
,所以你得到了这个结果。 (尝试df.col1-2
进行检查。)
您可以尝试(df.round(6)/.5).astype(int)
处理您看到的数字,但这是一种解决方法。