猿问

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

我有一个数据框:


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,依此类推。

先感谢您!


largeQ
浏览 216回答 2
2回答

回首忆惘然

首先,假设 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)

侃侃尔雅

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。
随时随地看视频慕课网APP

相关分类

Python
我要回答