【发布时间】:2018-12-14 05:39:16
【问题描述】:
更新: 请下载我的完整数据集here。
我的数据类型是:
>>> df.dtypes
increment int64
spread float64
SYM_ROOT category
dtype: object
我意识到问题可能是由于我的SYM_ROOT 是一个类别变量这一事实引起的。
要复制该问题,您可能需要先执行以下操作:
df=pd.read_csv("sf.csv")
df['SYM_ROOT']=df['SYM_ROOT'].astype('category')
但我仍然很困惑,为什么我的SYM_ROOT 会导致increment 中的空白被NA 填充?除非 groupby 类别和整数值默认会产生平衡的面板。
我注意到pd.groupby().last 的行为与pd.groupby().tail(1) 的行为不同。
例如,假设我有以下数据:
increment 是一个介于 0 到 4680 之间的整数。但是,对于某些 SYM_ROOT 变量,两者之间存在间隙。例如,其中可能缺少 4。
我想要做的是保留每组的最后一次观察。
如果我做df.groupby(['SYM_ROOT','increment']).last(),数据框变成:
如果我做df.groupby(['SYM_ROOT','increment']).tail(1),数据框变成:
在我看来,last() 语句将创建平衡的时间序列数据并用 NaN 填补空白,而 tail(1) 语句则不会。这是正确的吗?
【问题讨论】:
标签: python pandas time-series