【问题标题】:How do I copy values from 2 dimensional array into new column in pandas dataframe如何将二维数组中的值复制到熊猫数据框中的新列中
【发布时间】:2017-06-01 14:18:12
【问题描述】:

我想做这样的事情,其中​​ df.index 与 2dim_arr 完全匹配

df['newcol']=2dim_arr[df.index][df.existingcol.values]

如果我这样做,我可以获得我想要的值:

for i in range(len(df)):
  print(2dim_arr[i][df.iloc[i].existingcol])

提前感谢您的帮助。

【问题讨论】:

    标签: arrays pandas numpy dataframe copy


    【解决方案1】:

    您基本上使用来自existingcol 的值作为列索引,并遍历2D 数组的每一行以从2D 数组的每一行中选择一个元素。因此,我们可以使用NumPy's integer array indexing 来实现所需的新列-

    col_idx = df.existingcol.values
    df['newcol'] = dim2_arr[np.arange(len(dim2_arr)), col_idx]
    

    示例运行 -

    1) 输入:

    In [311]: df
    Out[311]: 
       existingcol
    0            2
    1            0
    2            0
    3            1
    4            0
    5            2
    6            1
    7            4
    8            3
    9            3
    
    In [313]: dim2_arr
    Out[313]: 
    array([[25, 75, 70, 45, 67],
           [21, 85, 74, 68, 61],
           [79, 33, 22, 77, 25],
           [69, 31, 67, 11, 45],
           [50, 12, 35, 55, 89],
           [62, 59, 86, 55, 58],
           [67, 41, 77, 88, 79],
           [64, 30, 36, 25, 21],
           [24, 73, 68, 84, 79],
           [50, 53, 55, 71, 84]])
    

    2) 使用建议的代码:

    In [314]: col_idx = df.existingcol.values
    
    In [317]: df['newcol'] = dim2_arr[np.arange(len(dim2_arr)), col_idx]
    
    In [318]: df
    Out[318]: 
       existingcol  newcol
    0            2      70
    1            0      21
    2            0      79
    3            1      31
    4            0      50
    5            2      86
    6            1      41
    7            4      21
    8            3      84
    9            3      71
    

    【讨论】:

    • 很棒的答案 Divakar。这非常有效!非常感谢!
    • @DeanaH。如果这解决了您的问题,请考虑通过单击解决方案旁边的空心对勾来接受它,更多信息在这里 - meta.stackexchange.com/questions/5234/…
    猜你喜欢
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    相关资源
    最近更新 更多