【发布时间】:2017-02-28 04:32:19
【问题描述】:
我有 2 个数据框 - “df_rollmax”是具有相同形状的“df_data”的派生词。我正在尝试将 df_rollmax 的值映射回 df_data 并创建第三个 df (df_maxdates),其中包含 df_rollmax 中的每个值最初出现在 df_data 中的日期。
list1 = [[21,101],[22,110],[25,113],[24,112],[21,109],[28,108],[30,102],[26,106],[25,111],[24,110]]
df_data = pd.DataFrame(list1,index=pd.date_range('2000-1-1',periods=10, freq='D'), columns=list('AB'))
df_rollmax = pd.DataFrame(df_data.rolling(center=False,window=5).max())
mapA = pd.Series(df_data.index, index=df_data['A'])
从上一个问题中,我看到可以通过以下方式找到一个日期:
mapA[rollmax.ix['j','A']] 返回Timestamp('2000-01-07 00:00:00')
但我的真实数据集要大得多,我想用日期填充第三个数据框,而不是遍历每一行和每一列。
映射回索引是一个问题,因为:ValueError: cannot reindex from a duplicate axis 所以这不起作用...
df_maxdates = pd.DataFrame(index=df_data.index, columns=df_data.columns)
for s in df_data.columns:
df_maxdates[s] = mapA.loc[df_rollmax[s]]
使用重复值的最后一个实例很好,但df.duplicated(keep='last') 不合作。
非常感谢任何和所有的智慧。
更新 - 这是 df_maxdates 的样子:
【问题讨论】:
-
你能发布/显示你想要的数据集吗?
-
MaxU - 见上文。谢谢!
标签: python pandas dataframe duplicates mapping