我有一个数据框:index value 0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 11 0 12 0 13 0 14 0 15 0 16 0 17 0 18 0 19 0 20 0 21 0 22 0 23 0 24 0 25 0 26 0 27 0 28 0 29 0 .. 57571 0 57572 0 57573 0 57574 0 57575 0 57576 0 57577 0 57578 0 57579 0 57580 0 57581 0 57582 0 57583 0 57584 0 57585 0 57586 0 57587 0 57588 0 57589 0 57590 0 57591 0 57592 0 57593 0 57594 0 57595 0 57596 0 57597 0 57598 0 57599 0 57600 0和 2 个数组:A=np.arange(0,57601,1800) A= [ 0, 1800, 3600, 5400, 7200, 9000, 10800, 12600, 14400, 16200, 18000, 19800, 21600, 23400, 25200, 27000, 28800, 30600, 32400, 34200, 36000, 37800, 39600, 41400, 43200, 45000, 46800, 48600, 50400, 52200, 54000, 55800, 57600]B=[555, 666, 0.0, 0.0, 0.0, 0.0, 1, 2, 3,4,5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0, 0.0, 0]我想将“B”中的值分配给“value”列中的元素,具体取决于“A”中指示的间隔之间的索引。例如:0 到 1800 之间为每个值分配 555;在 1801、3600 之间为每个值分配 666,依此类推。先感谢您!
2 回答
回首忆惘然
TA贡献1847条经验 获得超11个赞
首先,假设 A 和 B 的大小相同,我们可以制作一个这样的表格:
lookup = pd.DataFrame({'index_col':A, 'B':B})
让我假设我们可以按如下方式制作目标数据框:
df = pd.DataFrame({'index_col':np.arange(57601)})
现在,如果我们将两者合并,则 B 列将包含大量 NaN,因为它们不匹配:
merged_df = df.merge(lookup, how="left", on="index_col")
然后,我们可以用“pad”填充所有这些 NaN:
merged_df = merged_df.fillna(method="pad", axis=0)
侃侃尔雅
TA贡献1801条经验 获得超15个赞
X = np.zeros(57601)
df = pd.DataFrame(X,columns = ['value'])
#将创建您的数据帧
for i in range(len(A)-1):
df['value'][A[i]:A[i+1]+1] = float(B[i])
# 迭代A
数组中的每个范围并将值分配给数组中该范围内的数据帧B
。
添加回答
举报
0/150
提交
取消