寻找熊猫数据框架中的下降趋势

时间:2018-04-19 18:49:36

标签: python python-2.7 pandas numpy

我有一个包含以下列的数据框:

['NAME','SNAPDATE','RANK']

数据框可以在不同日期包含多次出现的相同NAME,每次都有不同的等级。 我想找到排名提高的产品(意味着价值下降)

我试过了:

diffs = df.RANK.diff()
df = df.assign(
     change=np.where(
     diffs > 0, 'increase', np.where(
     diffs < 0, 'decline', '------')))

问题在于它将数据框作为一个整体来处理,我需要找到一个NAME的趋势。

任何想法。

由于

1 个答案:

答案 0 :(得分:1)

我认为您可以将sort_valuesgroupby方法结合使用:

df.sort_values(by=['NAME', 'SNAPDATE']).groupby(by='NAME').RANK.diff()

E.g。

df = pd.DataFrame({
    'NAME': ['Name1', 'Name1', 'Name2', 'Name2', 'Name1', 'Name2'],
    'SNAPDATE': ['2018-04-01', '2018-04-02', '2018-04-03', '2018-04-01', '2018-04-03', '2018-04-02'],
    'RANK': [10, 11, 12, 10, 9 ,8]
})

df.sort_values(by=['NAME', 'SNAPDATE']).groupby(by='NAME').RANK.diff()

输出:

0    NaN
1    1.0
2    1.0
3    NaN
4   -1.0
5   -1.0
Name: RANK, dtype: float64