我在python中有一个pandas数据框,我试图修改特定行中的特定值。我找到了这个问题的解决方案Set value for particular cell in pandas DataFrame using index,但它仍然生成了SettingWithCopy错误。
数据框的名称是internal_df,它有列'价格','访问'和'订单'。具体来说,如果我们没有足够的访问次数(本例中为100次),我想将订单和访问次数添加到较低的价格点。请注意,在变量'价格'之下是一个浮点数,'价格'的数据类型。在internal_df数据框内是浮点数,而价格和订单是整数。
xcrun simctl help get_app_container
以下是数据样本
if int(internal_df[internal_df['price']==price]['visits']) < 100:
for index, row in internal_df.iterrows():
if float(row['price']) > price:
internal_df.ix[internal_df['price'] == price, 'visits'] = internal_df.ix[internal_df['price'] == price, 'visits'] + row['visits']
internal_df.ix[internal_df['price'] == price, 'orders'] = internal_df.ix[internal_df['price'] == price, 'orders'] + row['orders']
有没有人有任何建议,或者我应该忽略错误?
布拉德
答案 0 :(得分:1)
请注意.ix
is deprecated,因为它按位置或按标签索引,具体取决于索引的数据类型。请改用.loc
或.iloc
。
此SettingWithCopyWarning
可能来自&#34; get&#34;在您提供的代码之上运行几行代码。快速修复可能是找到首次分配internal_df
的位置,并将.copy()
添加到赋值语句的末尾。例如,如果您有internal_df = df[df['colname'] <= value]
,请将其更改为internal_df = df[df['colname'] <= value].copy()
,并希望这可以解决错误。
另外,我认为如果没有for循环,你可以做你想做的事情,这会更快,更可读!