根据日期减去数据帧中的值

我有这样的数据帧:


ID  Date       Paid  Due

A  2019-07-01  40000 50000

B  2018-08-20  1500  9000

B  2018-08-20  2500  9000

B  2018-09-18  3000  9000

C  2018-10-03  1000  2000

C  2018-10-30  1000  2000

D  2018-08-20  2000  3000

现在,我正在尝试根据月份(和 ID)减去值,因此我需要创建新列“月份重运”以及减去转移到下个月后剩余的值:


ID  Date       Paid  Due     Month     Month_Remaining

A  2019-07-01  40000 50000  2019-07      10000

B  2018-08-20  1500  9000   2018-08      7500

B  2018-08-20  2500  9000   2018-08      5000

B  2018-09-18  3000  9000   2018-09      2000

C  2018-10-03  1000  2000   2018-10      1000

C  2018-10-30  1000  2000   2018-10      0

D  2018-08-20  2000  3000   2018-08      1000

在熊猫中可能吗?


阿波罗的战车
浏览 80回答 1
1回答

RISEBY

如果 是纯字符串,则可以使用以下任一方式构建列:DateMonthdf['Month'] = pd.to_datetime(df['Date']).dt.strfime('%Y-%m')或df['Month'] = df['Date'].str.slice(0,7)如果是列,则可以使用:Datetimedf['Month'] = df['Date'].dt.strfime('%Y-%m')然后,您可以使用以下命令构建列:Month_Remainingdf['Month_Remaining'] = df['Due'] - df.groupby(['ID'])['Paid'].cumsum()你应该最终得到:  ID        Date   Paid    Due    Month  Month_Remaining0  A  2019-07-01  40000  50000  2019-07            100001  B  2018-08-20   1500   9000  2018-08             75002  B  2018-08-20   2500   9000  2018-08             50003  B  2018-09-18   3000   9000  2018-09             20004  C  2018-10-03   1000   2000  2018-10             10005  C  2018-10-30   1000   2000  2018-10                06  D  2018-08-20   2000   3000  2018-08             1000
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python