如何使用来自另一列的移位值创建新的数据框列?

时间:2014-06-05 06:56:45

标签: python pandas

我从数据库查询返回数据,并希望在结果数据框中创建新列。我需要将一列的结果向前移动一个月以创建一个新列。

我有一个从sql查询填充的数据框,格式为:

df.dtypes
ACTIVITY_MONTH     datetime64[ns]
PRODUCT_KEY                object
COUNT                 float64

当我跑步时:

df['NEW_COUNT'] = df.groupby('PRODUCT_KEY')['COUNT'].shift(+1)

我收到此错误:

ValueError: cannot reindex from a duplicate axis

这个错误对我没有意义,我不知道如何解决它。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

错误ValueError: cannot reindex from a duplicate axis表示在这种情况下您的索引中有重复的条目(因此,它无法分配给新列,因为pandas无法知道将重复条目的值放在何处)

要检查索引中的重复值,您可以执行以下操作:

df.index.get_duplicates()

然后去掉重复的值(如果你不需要保留原始索引),你可以做df.reset_index(drop=True),或者你可以在{{ignore_index=True中使用append 1}}或concat