在多索引数据框架上运行

时间:2015-10-02 19:25:50

标签: python pandas

我的数据框head()如下所示:

                                         followers  following
experience   userid date                                     
Intermediate 0      2010-01-02 05:28:38      84330       1331
                    2010-01-02 18:46:36      84330       1331
                    2010-01-02 18:47:22      84330       1331
                    2010-01-02 18:50:12      84330       1331
                    2010-01-02 23:08:55      84330       1331

我有更多行。对于每个用户ID,我想减去第一个followers值(例如,在上面的示例中,从userid=0中的所有日期减去84330)。是否有一些apply()命令会执行此操作?

1 个答案:

答案 0 :(得分:1)

找到每个用户标识的第一行:

cut = df.groupby('userid').first()

然后将其合并回原始表:

cut.columns = cut.columns.map(lambda x: str(x) + '_a')
df2 = df.merge(cut, left_on=['userid'], right_index=True, how='left')

然后删除与第一行值

匹配的这些行
new = df2[df2['followers'] != df2['followers']][['userid','date','followers']]