我正在写一个模拟软件来测量资产的性能。我创建了一个循环,其中使用dataframe2.at [x,y]读取dataframe1中的两个参数,即电压和功率,并用于查找dataframe2中的效率值。
当前,这会导致“试图在切片副本上设置值”警告。
然后在此循环中,我要获取效率值并将其放在dataframe1 ['efficiency']中适当行号z处。
因此,代码的工作原理与
大致相同for z in range(0,len(dataframe1)):
x = z['voltage']
y = z['power']
#do some other work checking numbers
dataframe1.loc[:,'efficiency'].iloc[z] = dataframe2.at[int(x),y]
代码按原样工作,但我收到此警告。 ix已被弃用,这将允许这种混合分配。是否有解决此问题的优雅方法,仍然允许使用标签?
预先感谢您的任何建议。
答案 0 :(得分:1)
收到此警告的原因是因为您正在分割一片切片-也就是说,您正在依次使用两种切片方法(loc
和iloc
)。
您可以使用 one 切片方法来避免这种情况。例如:
dataframe1.iloc[z,df.columns.get_loc('efficiency')] = dataframe2.at[int(x),y]
通常,这被认为是更惯用的熊猫。您可以阅读有关主题here的更多信息。