pandas 按组循环日期的快速方法

uxhixvfz  于 2023-01-28  发布在  其他
关注(0)|答案(1)|浏览(140)

enter image description here
我需要使用最后一天的期末余额来计算ID的期初余额。
我试过这段代码,但是要遍历每个ID和每个日期。但是它太慢了(我有50万个要处理)。有没有更好的方法来处理这个问题?
我的想法是我的最后两行代码不是很有效。

id_list = df['ID'].unique().tolist()
date_list = df['Date'].unique().tolist()

for t in id_list:
    k = 0
    for d in date_list:
        print(t,d)
        df.loc[(df['ID'] == t) & (dfx['Date'] == d), ['Opening Bal']] = k
        k = df.loc[(df['ID)'] == t) & (dfx['Date'] == d), ['Ending Bal']]

我的想法是我的最后两行代码不是很有效。

b4lqfgs4

b4lqfgs41#

import pandas as pd
import numpy as np
df = pd.DataFrame({'Date': ['01/01/2023', '01/02/2023', '01/03/2023','01/01/2023', '01/02/2023', '01/03/2023'],
                   'ID': ['A', 'A', 'A', 'B', 'B', 'B'],
                   'Ending Bal': [0.56, 0.73, 1.09, 0.34, 0.86, 1.83]})
df = df.sort_values(by=['Date'])
df = df.sort_values(by=['ID'])
temp = []
for i in df['ID'].unique():
    temp = temp + [np.nan]+list(df[df['ID']==i]['Ending Bal'])[:-1]
df['Opening Bal'] = temp

相关问题