代码之家  ›  专栏  ›  技术社区  ›  A. Blackmagic

将行添加到数据帧,该数据帧是2个现有行的和

  •  0
  • A. Blackmagic  · 技术社区  · 8 年前

    我找不到合适的代码来将行添加到数据帧中,这是数据帧中2个现有行的总和。

    到目前为止,我的代码是:

    df = pd.DataFrame(np.random.randint(0,100,size=(20, 5)), columns=['First','Second','Third','Fourth','Fifth'],index=list('abcdefghijklmnopqrst'))
    
    df2 = pd.DataFrame({'First':['0'],'Second':['1'],'Third':['-1'],'Fourth':['2'],'Fifth':['-2']},index=["u"])
    
    df3 = pd.concat([df,df2],axis=0,join='inner')
    print(df3)
    

    我想在df3中添加一行“v”,其中行“v”是df3的行“b”和“d”的总和

    下面是我的尝试,但我似乎想不通!如果我能接近你,请告诉我。提前谢谢:)

    df4 = df3["b","d"].sum()
    df4= df3["b"].add(df3["d"], index=["v"])
    df3.loc['v'] = df.sum("b", "d")
    df3.loc['v',"First','Second','Third','Fourth','Fifth'] = df3.sum("b", "d")
    
    3 回复  |  直到 8 年前
        1
  •  2
  •   LukasNeugebauer    8 年前

    你现在的问题似乎是想得太复杂了。其实很简单,就是说“v”行是“b”行和“d”行的和。或者在pandas语法中:

    df.loc['v'] = df.loc['b'] + df.loc['d']

    如果确实需要使用sum()函数,则必须了解它在数据帧上的工作方式。在您的示例中,首先必须选择相应的行(这将返回这些行的pandas.DataFrame视图),然后使用此视图的sum()函数,如下所示:

    df.loc['v'] = df.loc[['b','d']].sum()

    我使用pandas 0.23.3和python 3.6。

        2
  •  2
  •   BENY    8 年前

    append

    df3.append(df3.loc[["b","d"],:].sum().to_frame('v').T)
    Out[520]: 
      First Second Third Fourth Fifth
    a    27     77    54     39    23
    b    84     37    99     87    37
    c    63     25    11     71    44
    d    70      4    71     63    86
    e    50     78    70      6    78
    f    53     50    31     72    87
    g    10      5    28     79    56
    h    68     15    13     71    38
    i    17     12    12     15    46
    j    37     90    24      2    36
    k    47     91    55     54     9
    l     4     10    12     18    27
    m    68     86    83     83    11
    n    41     46    93     15     8
    o    80     29    68     94    16
    p    36     81    43     61    44
    q     5     10    92     47    40
    r    70      0    58     55    36
    s    22     76    99     21    61
    t    24     75     5     81    47
    u     0      1    -1      2    -2
    v   154     41   170    150   123
    
        3
  •  2
  •   tif    8 年前
    df3.loc['v']=df3.loc['b'] + df3.loc['d']