我们的实习生写了一个与熊猫一起工作的代码,并抱怨他找不到错误,但结果与预期不符。令人惊讶的是,我也无法帮助他,因为我使用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
答案 0 :(得分:1)
首先,在当前版本的pandas中不推荐使用set_value
。其次,set_value
使用索引标签,然后iloc
使用索引位置,它们在数据框中是否相同?如果您的索引没有以零表示,那么您可能会查看不同的行。
让我们尝试这样的事情:
print(group_to_data.loc[index,"Realized_Time_Indirect"])