pandas:将一行附加到数据帧,其中的值是使用应用于选定列的用户定义公式派生的

pandas:将一行附加到数据帧,其中的值是使用应用于选定列的用户定义公式派生的,pandas,Pandas,我有一个数据帧 df = pd.DataFrame(np.random.randn(5,4),columns=list('ABCD')) 我可以使用以下方法来实现传统的计算,如mean(),sum()等 df.loc['calc'] = df[['A','D']].iloc[2:4].mean(axis=0) 现在我有两个问题 如何将公式(如exp(mean())或2.5*mean()/sqrt(max())应用于第2行到第4行的“a”列和“D”列 如何将行附加到现有的df中,其中两个值将

我有一个数据帧

df = pd.DataFrame(np.random.randn(5,4),columns=list('ABCD')) 
我可以使用以下方法来实现传统的计算,如
mean()
sum()

df.loc['calc'] = df[['A','D']].iloc[2:4].mean(axis=0)
现在我有两个问题

  • 如何将公式(如
    exp(mean())
    2.5*mean()/sqrt(max())
    应用于第2行到第4行的“a”列和“D”列
  • 如何将行附加到现有的
    df
    中,其中两个值将是
    A
    D
    mean()
    ,两个值将是
    C
    B
    的特定公式结果
  • Q1:

    您可以使用
    .apply()
    lambda
    函数

    df.iloc[2:4,[0,3]].apply(lambda x: np.exp(np.mean(x)))
    df.iloc[2:4,[0,3]].apply(lambda x: 2.5*np.mean(x)/np.sqrt(max(x)))
    
    Q2:

    您可以使用字典并将它们合并,然后将其添加为一行。 第一个是mean,第二个是一些自定义函数

    ad = dict(df[['A', 'D']].mean())
    bc = dict(df[['B', 'C']].apply(lambda x: x.sum()*45))
    
    将它们结合起来:


    最好让我们看看你的预期输出是什么你建议的东西,在Spark 1.6.3中也可以这样做吗我想你可以
    ad.update(bc)
    
    df = df.append(ad, ignore_index=True)