尽管熊猫有时间序列功能,但我仍在努力处理具有不完整时间序列数据的数据帧。滞后值和大熊猫数据帧与缺失季度数据的差异
看下面的图片,下面的图片有完整的数据,上面有空白。两张照片都显示正确的值。红色是我想用黑色数据计算的列。 Cumm_Issd
列显示年内累计已发行股数,MV
为市场价值。
我想要计算每个季度(IssdQtr
)已发行股份,市值(D_MV_Q
)的季度变化,去年(L_MV_Y
)的MV
。
查看基础CVS数据,该数据为link,空位数据为link。有两家公司1020180
和1020201
。
但是,当我尝试使用Pandas shift
方法时,如果有间隙,它会失败,请尝试使用下面的csv文件和代码。所有列(DiffEq, Dif1MV, Lag4MV
)分别与IssdQtr, D_MV_Q, L_MV_Y
不同 - 对于某些季度。
有没有办法处理使用熊猫的数据差距?
import pandas as pd
import numpy as np
import os
dfg = pd.read_csv('example_soverflow_gaps.csv',low_memory=False)
dfg['date'] = pd.to_datetime(dfg['Period'], format='%Y%m%d')
dfg['Q'] = pd.DatetimeIndex(dfg['date']).to_period('Q')
dfg['year'] = dfg['date'].dt.year
dfg['DiffEq'] = dfg.sort_values(['Q']).groupby(['Firm','year'])['Cumm_Issd'].diff()
dfg['Dif1MV'] = dfg.groupby(['Firm'])['MV'].diff(1)
dfg['Lag4MV'] = dfg.groupby(['Firm'])['MV'].shift(4)
跳空数据:
完整数据:
你想在你计算时有差距,怎么办?是'pd.DataFrame.fillna(method ='ffill')'给你一个选项吗? –
缺口应该是NaN –
也许你可以用'dfg.groupby(['Firm'])['MV'] .. fillna(np.nan).shift(4)''离开。 'pandas'自动在像这样的操作中传播NaN值。 –