我想使用条件运行循环并将所有输出另存为具有不同名称的数据框

时间:2019-04-09 12:43:37

标签: python pandas

我写了一个仅依赖于数据框的函数。函数输出也是一个数据框。我想根据条件创建不同的数据框,并将其另存为具有不同名称的不同数据集。但是我无法将它们另存为具有不同名称的数据框。相反,我手动执行该过程。有没有可以做同样的代码。这将是非常有益的。

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)

我想改进这一部分,是否有更好的方法来执行相同的过程?

1 个答案:

答案 0 :(得分:0)

您可以让您的vintage_table()函数返回一个数据帧,而不是一遍又一遍地修改一个数据帧,这样您就可以在第二个代码块中这样做:

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