Saya memiliki kerangka data seperti ini:

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

Sekarang saya mencoba untuk mengurangi nilai berdasarkan bulan (dan berdasarkan ID), jadi saya perlu membuat kolom baru 'Bulan tersisa' dan nilai yang tersisa setelah dikurangi transfer ke bulan berikutnya:

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

Apakah mungkin di Panda?

0
Alex T 2 Maret 2020, 13:47

1 menjawab

Jawaban Terbaik

Jika Date adalah string biasa, Anda dapat membuat kolom Month dengan:

df['Month'] = pd.to_datetime(df['Date']).dt.strfime('%Y-%m')

Atau

df['Month'] = df['Date'].str.slice(0,7)

Jika ini adalah kolom Datetime, Anda dapat menggunakan:

df['Month'] = df['Date'].dt.strfime('%Y-%m')

Anda kemudian dapat membangun kolom Month_Remaining dengan:

df['Month_Remaining'] = df['Due'] - df.groupby(['ID'])['Paid'].cumsum()

Anda akhirnya harus mendapatkan:

  ID        Date   Paid    Due    Month  Month_Remaining
0  A  2019-07-01  40000  50000  2019-07            10000
1  B  2018-08-20   1500   9000  2018-08             7500
2  B  2018-08-20   2500   9000  2018-08             5000
3  B  2018-09-18   3000   9000  2018-09             2000
4  C  2018-10-03   1000   2000  2018-10             1000
5  C  2018-10-30   1000   2000  2018-10                0
6  D  2018-08-20   2000   3000  2018-08             1000
1
Serge Ballesta 2 Maret 2020, 11:07