我有一个数据框:
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]
我想根据“ A”中指示的间隔之间的索引,将“ B”中的值分配给“值”列中的元素。 例如:
在0到1800之间为每个值分配555;
在1801、3600之间为每个值分配666,依此类推。
提前谢谢!
答案 0 :(得分:1)
首先,假设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)
答案 1 :(得分:0)
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
数组中该范围内的数据帧分配值。