从数据创建时间序列
Create a time series from data
我有一个数据框,其中包含有关贷款组合中违约的信息以及违约发生的时间。每个 'observation' 是一对,代表以天为单位的时间 t,以及贷款违约金额:
df['time_to_default'] # Time from origination to default
df['default_amnt'] # The loan amount defaulted
我想创建一个系列来表示任何给定时间 t 的累计违约金额。 (假设 time_to_default 可以被 t 整除)。我不知道如何创建一个新的数据框元素,将初始值分配给 0,然后遍历该系列....
听起来您需要将 groupby
与 cumsum
一起使用,因为您想要 运行 总数:
cum_defaults = df.groupby('time_to_default').default_amnt.sum().cumsum()
然后您需要重新索引这个新系列以填补任何缺失的天数:
cum_defaults = cum_defaults.reindex(index=range(min(cum_defaults.index),
max(cum_defaults.index) + 1),
method='ffill')
一些示例数据:
df = pd.DataFrame({'time_to_default': [1, 3, 3, 6],
'default_amnt': [10, 20, 30, 40]})
>>> cum_defaults
time_to_default
1 10
2 10
3 60
4 60
5 60
6 100
Name: default_amnt, dtype: int64
我有一个数据框,其中包含有关贷款组合中违约的信息以及违约发生的时间。每个 'observation' 是一对,代表以天为单位的时间 t,以及贷款违约金额:
df['time_to_default'] # Time from origination to default
df['default_amnt'] # The loan amount defaulted
我想创建一个系列来表示任何给定时间 t 的累计违约金额。 (假设 time_to_default 可以被 t 整除)。我不知道如何创建一个新的数据框元素,将初始值分配给 0,然后遍历该系列....
听起来您需要将 groupby
与 cumsum
一起使用,因为您想要 运行 总数:
cum_defaults = df.groupby('time_to_default').default_amnt.sum().cumsum()
然后您需要重新索引这个新系列以填补任何缺失的天数:
cum_defaults = cum_defaults.reindex(index=range(min(cum_defaults.index),
max(cum_defaults.index) + 1),
method='ffill')
一些示例数据:
df = pd.DataFrame({'time_to_default': [1, 3, 3, 6],
'default_amnt': [10, 20, 30, 40]})
>>> cum_defaults
time_to_default
1 10
2 10
3 60
4 60
5 60
6 100
Name: default_amnt, dtype: int64