Python 将公式应用于数据帧中的两行

Python 将公式应用于数据帧中的两行,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个如下所示的数据帧: intakeNo 1 2 3 intakeDate 3/21/1978 4/28/1979 1/11/1981 intakeAmt 9.3E-04 5.1E-02 2.4E-0

我有一个如下所示的数据帧:

intakeNo                         1                    2                    3   
intakeDate                  3/21/1978            4/28/1979            1/11/1981
intakeAmt                   9.3E-04              5.1E-02              2.4E-04   
intakeSD                    2.2E-02              7.7E-01              5.8E-03   
incident                          F                    F                    F                    
intakeDate                  3/19/1978            5/6/1979             1/3/1981
intakeAmt                   3.2E-02              1.9E-02              4.7E-03   
intakeSD                    9.6E-01              5.3E-01              1.4E-01   
我可以通过

df.loc['intakeAmt_avg'] = df.loc['intakeAmt'].mean()
但是,我想应用以下函数来获得数据帧中的intakeDates的平均值,并添加一个名为intakeDate_avg的行:

def average_of_two_dates(datestr1, datestr2):
    a = dt.datetime.strptime(datestr1, '%m/%d/%Y')
    b = dt.datetime.strptime(datestr2, '%m/%d/%Y')
    ave = a+(b-a)/2
    return dt.datetime.strftime(ave, "%m/%d/%Y")
首先,我尝试将df的“intakeDate”部分转换为:

a = df['intakeDate']
b = a.T
这给了我以下数据帧b:

intakeNo   intakeDate  intakeDate                     
1          3/21/1978   3/19/1978
2          4/28/1979    5/6/1979
3          1/11/1981    1/3/1981
现在,我需要添加一个名为intakeDate_avg的列,它将两个日期的平均值函数应用于两个intakeDate列中的值

原始的转置df如下所示:

intakeNo    intakeDate  intakeAmt   intakeSD    incident    intakeDate  intakeAmt   intakeSD
1          3/21/1978    9.30E-04    2.20E-02    F           3/19/1978   3.20E-02    9.60E-01
2          4/28/1979    5.10E-02    7.70E-01    F           5/6/1979    1.90E-02    5.30E-01
3          1/11/1981    2.40E-04    5.80E-03    F           1/3/1981    4.70E-03    1.40E-01

如果将函数更改为使用单个列表输入,则在此情况下可以使用
apply

df.loc['intakeDate_avg'] = df.loc['intakeDate'].apply(average_of_two_dates)

根据我之前回答的问题,在进行任何有意义的分析之前,您应该(事实上,我认为必须)转换数据帧。如果您使用转置数据帧进行更新,我将对此进行研究[请参阅前一个问题中的说明]。您的平均值可能适用于两个日期(或通常的值),但不适用于10个值,例如,10个值:在这种情况下,哪个值是a,哪个值是b?@jpp,我修改了我的问题,其中包括转置数据帧。谢谢。@DPdl,你能把输入的数据也转置一下吗?因为这就是我们将要开始的内容。@jpp,完成。谢谢