为了账号安全,请及时绑定邮箱和手机立即绑定

Python:在范围之间分配数组值

Python:在范围之间分配数组值

largeQ 2021-12-26 10:40:47
我有一个数据框: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)


查看完整回答
反对 回复 2021-12-26
?
侃侃尔雅

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


查看完整回答
反对 回复 2021-12-26
  • 2 回答
  • 0 关注
  • 215 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信