python pandas dataframe使r(t-1).iloc [1:] = r(t).iloc [0:-1]

时间:2019-03-09 04:23:10

标签: python pandas dataframe time-series finance

我想在熊猫数据框中创建一列,第二行到最后一行等于另一列的第一行到最后第二行: 它看起来像:

r(t-1).iloc[1:] = r(t).iloc[0:-1](r(t) and r(t-1)) 

是同一数据框的列

我遇到的问题是python无法获得我想要转移复制数据行的想法:

IR['r(t-1)'].iloc[1:] = IR['r(t)'].iloc[0:-1]
/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py:190: 

SettingWithCopyWarning: 试图在DataFrame的切片副本上设置一个值

请参阅文档中的警告:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

  self._setitem_with_indexer(indexer, value)

有人知道如何处理吗?

1 个答案:

答案 0 :(得分:0)

欢迎来到。

如何解决您的问题

似乎您需要在其中一列中进行班次。如问题的前两行所示。您可以通过shift()方法来处理熊猫数据框。那么您的答案可能是:

df['new_row'] = df['old_row'].shift(1)

您可以向前或向后移动负值和正值

您遇到的错误是什么

简而言之,熊猫提供了数据帧读写的方式,实际上它不接受任何其他方式。该警告表明,由于iloc主要用于按索引访问行,因此您(使用iloc)(使用=IF(AND(B4="Operational", CODE(LEFT(E4))>=65, CODE(LEFT(E4))<=71), "Operations Database 1 A-G", "") =IF(AND(B4="Operational", OR(LEFT(E4)={"A","B","C","D","E","F","G"})), "Operations Database 1 A-G", "") )写入数据帧的方式不是很好(熊猫!)。

这里有任何熊猫专家,如果我错了,请纠正我。