我想运行一个带条件的循环,并将所有输出保存为具有不同名称的数据帧

2024-10-08 18:26:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了一个只依赖于数据帧的函数。函数输出也是一个数据帧。我想使不同的数据帧根据条件,并保存为不同的数据集与不同的名称。但是,我无法将它们保存为具有不同名称的数据帧。相反,我手动完成这个过程。有没有一个代码可以做同样的事情。这将是非常有益的

import os
import numpy as np
import pandas as pd


data1 = pd.read_csv('C:/Users/Oz/Desktop/vintage/vintage1.csv', encoding='latin-1')



product_list=  data1['product_types'].unique()

def vintage_table(df):
df['Disbursement_Date']=pd.to_datetime(df.Disbursement_Date)
df['Closing_Date']=pd.to_datetime(df.Closing_Date)
df['NPL_date']=pd.to_datetime(df.NPL_date, errors='ignore')

df['NPL_date_period']=df.loc[df.NPL_date > '2015-01-01', 'NPL_date'].apply(lambda x: x.strftime('%Y-%m'))
df['Dis_date_period'] = df.Disbursement_Date.apply(lambda x: x.strftime('%Y-%m'))
df['diff']=((df.NPL_date-df.Disbursement_Date) / np.timedelta64(3, 'M')).round(0)

df=df.groupby(['Dis_date_period','NPL_date_period']).agg({'Dis_amount' : 'sum',  'NPL_amount' : 'sum', 'diff' : 'mean'})
df.reset_index(level=0, inplace=True)
df['Vintage_Ratio']=df['NPL_amount']/df['Dis_amount']

table=pd.pivot_table(df,values='Vintage_Ratio',index='Dis_date_period',columns=['diff'],).fillna(0)

return

以上是函数

#for e in product_list:
#       sub = data1[data1['product_types'] == e]
#       print(sub)

consumer = data1[data1['product_types'] == product_list[0]]
mortgage = data1[data1['product_types'] == product_list[1]]
vehicle = data1[data1['product_types'] == product_list[2]]


table_con = vintage_table(consumer)
table_mor = vintage_table(mortgage)
table_veh = vintage_table(vehicle)

我想改进这部分有没有更好的方法做同样的过程


Tags: 数据dfdatetableproductlistperiodtypes
1条回答
网友
1楼 · 发布于 2024-10-08 18:26:09

您可以让vintage_table()函数返回一个数据帧,而不是一次又一次地修改一个数据帧,这样您就可以在第二个代码块中执行此操作:

table_con = vintage_table(consumer)
table_mor = vintage_table(mortgage)
table_veh = vintage_table(vechicle)

相关问题 更多 >

    热门问题