使用标签和索引在熊猫数据框中设置值,现在不建议使用ix

时间:2019-03-07 16:04:10

标签: python pandas

我正在写一个模拟软件来测量资产的性能。我创建了一个循环,其中使用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已被弃用,这将允许这种混合分配。是否有解决此问题的优雅方法,仍然允许使用标签?

预先感谢您的任何建议。

1 个答案:

答案 0 :(得分:1)

收到此警告的原因是因为您正在分割一片切片-也就是说,您正在依次使用两种切片方法(lociloc)。

您可以使用 one 切片方法来避免这种情况。例如:

dataframe1.iloc[z,df.columns.get_loc('efficiency')] = dataframe2.at[int(x),y]

通常,这被认为是更惯用的熊猫。您可以阅读有关主题here的更多信息。