我正在尝试确定任何给定日期的有效日期。数据框中有一列由BMonthEnd填充(考虑到节假日计算每月最后一个工作日 - 未在此处显示代码)。下面所示的部分数据框将EffectiveDate设置为第1步的Date。
我现在尝试使用以下代码选择需要更改的数据:
Date BMonthEnd EffectiveDate
2014-08-24 2014-08-24 2014-08-29 2014-08-24
2014-08-25 2014-08-25 2014-08-29 2014-08-25
2014-08-26 2014-08-26 2014-08-29 2014-08-26
2014-08-27 2014-08-27 2014-08-29 2014-08-27
2014-08-28 2014-08-28 2014-08-29 2014-08-28
2014-08-29 2014-08-29 2014-08-29 2014-08-29
2014-08-30 2014-08-30 2014-08-29 2014-08-30
2014-08-31 2014-08-31 2014-08-29 2014-08-31
我现在尝试使用以下代码选择需要更改的数据:
df[~(df.Date<df.BMonthEnd)].EffectiveDate # giving the expected slice
# but
df[~(df.Date<df.BMonthEnd)].EffectiveDate = 1
# gives error
SettingWithCopyWarning: A value is trying to be set on a copy of a slice
from a DataFrame. Try using .loc[row_index,col_indexer] = value instead
self[name] = value
在收到警告后,我尝试了备选方法,我尝试了:
df.loc[~(df.Date<df.BMonthEnd)].EffectiveDate = 1
这也会导致相同的错误(请注意,赋值中使用的1只是另一个函数的占位符),但是该赋值不会反映在原始数据框上。我理解我实际上是在给副本赋值,以便它不会像预期的那样更改原始数据框。
然而,我如何使用选择语法进行赋值呢?我真的不想遍历数据框来完成任务。
df['EffectiveDate']
的 dtype 是什么? - unutbu