我收集了很多天的数据,而不是每天填写,我可以选择说,一天的数据应该是另一天的重复。我想将现有数据帧中的一些行重复到指定为repeats的日期中。我有一个列,指出哪一天是当前的一天是重复,但我陷入了错误。你知道吗
我已经找到了基于列值将行重复n次的方法,但是我正在尝试使用列作为索引来重复前面行中的数据。你知道吗
我想用“Repeat”列作为索引,将第1天的“Data”列的一部分复制到第3天的“Data”列。我想在更多不同的日子里这样做。你知道吗
data = [['1', 5,np.NaN], ['1',5,np.NaN],['1',5,np.NaN], ['2', 6,np.NaN],['2', 6,np.NaN],['2', 6,np.NaN], ['3',np.NaN,1], ['3',np.NaN,np.NaN],['3', np.NaN,np.NaN]]
df = pd.DataFrame(data, columns = ['Day', 'Data','repeat_tag'])
设置
解决方案
结果
我稍微扩展了你的测试数据:
详情:
我假设repeat\u tag的非空值只能放在一个 观察“目标”日。你知道吗
我还添加了obsNo列,以确定特定日期内的观察结果:
(稍后会有必要)。你知道吗
实际处理的第一步是生成replDays表,其中Day 列是目标日期,重复标签是来源日期:
使用repeat_tag列进行一些类型操作。 由于此列包含NaN值,非空值为int,因此此列为 强制为float64。因此,要获得字符串类型(与日相当) 必须转换:
结果是:
(用第1天的数据填充第3天的数据,用第2天的数据填充第4天的数据)。你知道吗
下一步是生成replData表:
结果是:
如你所见:
最后一部分包括以下步骤:
代码是:
如果需要,还可以删除obsNo列。你知道吗
以及彼得关于解决方案的评论: 如果源数据包含任何一天不同的值,他的代码就会失败 有InvalidIndexError,可能是由于缺乏对 特定日期内的个别观察。 这证实了我添加obsNo列的想法是有效的。你知道吗
相关问题 更多 >
编程相关推荐