Pandas set_value()insert float表现得很奇怪

时间:2017-12-14 15:51:21

标签: python pandas dataframe

我们的实习生写了一个与熊猫一起工作的代码,并抱怨他找不到错误,但结果与预期不符。令人惊讶的是,我也无法帮助他,因为我使用pandas dataframe.set_value()遇到了一些意外行为

我将问题简化为: 将浮点值插入大于110左右会在数据框中生成不正确的负值。

我将重要值提取到元组列表中。

结构:[(index_of_df_insert_row, float_value_to_insert), ...]

以下是重要的代码段:

print(replace_values)

for index, value in replace_values:
    grouped_to_data.set_value(index, "Realized_Time_Indirect", value)
    print(value + " > ")
    print(grouped_to_data.iloc[index]["Realized_Time_Indirect"])
    print()

以下是示例输出:

5.6 >
5

8.5 >
8

43.0 >
43

23.0 >
23

<<<<<<<<<<< WHY? >>>>>>>>>>>

147.5 >
-109

<<<<<<<<<<< WHY? >>>>>>>>>>>

28.0 >
28

28.5 >
28

39.32 >
39

17.0 >
17

86.30000000000001 >
86

58.5 >
58

1 个答案:

答案 0 :(得分:1)

首先,在当前版本的pandas中不推荐使用set_value。其次,set_value使用索引标签,然后iloc使用索引位置,它们在数据框中是否相同?如果您的索引没有以零表示,那么您可能会查看不同的行。

让我们尝试这样的事情:

print(group_to_data.loc[index,"Realized_Time_Indirect"])