【发布时间】:2017-08-28 00:31:41
【问题描述】:
我有一个数据框
x = pd.DataFrame(index = ['wkdy','hr'],columns=['c1','c2','c3'])
这导致数据框中有 168 行数据。 7 个工作日,每天 24 小时。 我有另一个数据框
dates = pd.date_range('20090101',periods = 10000, freq = 'H')
y = DataFrame(np.random.randn(10000, 3), index = dates, columns = ['c1','c2','c3'])
y['hr'] = y.index.hour
y['wkdy'] = y.index.weekday
我想用“x”中的数据填充“y”,这样每个工作日和每个小时都有相同的数据,但附加了一个日期戳。 我知道的唯一方法是遍历日期和填充值。有没有更快、更有效的方法来做到这一点? 我的解决方案(至少可以说相当粗糙)逐行迭代整个数据帧 y 并尝试通过查找从数据帧 x 填充。
for r in range(0,len(y)):
h = int(y.iloc[r]['hr'])
w = int(y.iloc[r]['wkdy'])
y.iloc[r] = x.loc[(w,h)]
【问题讨论】:
-
您的预期结果是什么?
-
我的预期结果是一个数据框 y,其中 c1、c2、c3 列的数据来自数据框 x..where y.wkday=x.wkday 和 y.hr=x.hr
-
1.来自
x的确切数据是否与y中的多个星期块重复? 2. 从x,如果超过一周,你怎么知道y更新哪个日期时间? 3. 听起来df.update 可能会有所帮助。 -
是的,我想更新相同的确切数据......正如你所说的重复数周。