python - 应用groupby后如何在数据框中添加列

标签 python pandas

我有这样的数据框

    id             Date
    546451991   2018-07-31 00:00:00
    546451991   2018-08-02 00:00:00
    5441440119  2018-08-13 00:00:00
    5441440119  2018-08-13 00:00:00
    5441440119  2018-08-14 00:00:00
    5344265358  2018-07-13 00:00:00
    5344265358  2018-07-15 00:00:00
    5441438884  2018-07-19 00:00:00

我想按“ID”分组,然后根据日期排序,然后添加包含下一个行的日期的列

例如我想要这样的输出

 id             Date              Date1
546451991   2018-07-31 00:00:00  2018-08-02 00:00:00
546451991   2018-08-02 00:00:00  NULL
5441440119  2018-08-13 00:00:00  2018-08-14 00:00:00
5441440119  2018-08-14 00:00:00  2018-08-15 00:00:00
5441440119  2018-08-15 00:00:00  NULL
5344265358  2018-07-13 00:00:00  2018-07-15 00:00:00
5344265358  2018-07-15 00:00:00  NULL
5441438884  2018-07-19 00:00:00  NULL

我尝试过但没有成功 df.groupby('id')['Date'].sort_values() 不起作用

最佳答案

df['Date1'] = df.groupby('id')['Date'].apply(lambda x: x.sort_values().shift(-1))

输出:

            Date           id          Date1
0   2018-07-3100:00:00  546451991   2018-08-0200:00:00
1   2018-08-0200:00:00  546451991   NaN
2   2018-08-1300:00:00  5441440119  2018-08-1300:00:00
3   2018-08-1300:00:00  5441440119  2018-08-1400:00:00
4   2018-08-1400:00:00  5441440119  NaN
5   2018-07-1300:00:00  5344265358  2018-07-1500:00:00
6   2018-07-1500:00:00  5344265358  NaN
7   2018-07-1900:00:00  5441438884  NaN

编辑

来自 Sandeep 输入

df['Date1'] = df.groupby('id')['Date'].shift(-1)

关于python - 应用groupby后如何在数据框中添加列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52234103/

相关文章:

python - 凹面掩模到凸面

python - 如何使用 pymongo 在 Mongodb 中进行正则表达式搜索?

python - 合并列并使用 Pandas 创建新列

python - 从 Binance API 中提取数据并将其转换为 PANDAS Dataframe

python - pandas concat() 不加入同一列

python datapanda : getting values from rows into list

Python 3 - 希伯来语编码问题

python - 正则表达式将主题标签拆分为单词

python - sqlite python INSERT IF NOT EXIST 有很多变量

python - 替换数据框中的 NaN 截断数字