使用索引和列名称快速元素应用函数 - pandas

时间:2017-11-02 10:26:19

标签: python pandas numpy

我有一个可以简化的数据框:

df = pd.DataFrame(index = ['01/11/2017', '01/11/2017', '01/11/2017', '02/11/2017', '02/11/2017', '02/11/2017'],
                 columns = ['Period','_A', '_B', '_C'] )
df.Period = [1, 2, 3, 1, 2, 3]
df

看起来像:

Date Period _A _B _C 01/11/2017 1 NaN NaN NaN 01/11/2017 2 NaN NaN NaN 01/11/2017 3 NaN NaN NaN 02/11/2017 1 NaN NaN NaN 02/11/2017 2 NaN NaN NaN 02/11/2017 3 NaN NaN NaN

我想将我的功能应用于每个单元格

Get_Y(Date, Period, Location) (其中_A, _B, _C, ...是位置)。

Get_Y是一个复杂的函数,它使用Date,Period和Location从其他数据框中查找数据,并根据条件给出Y的值(0到1之间的浮点数)。

我已经成功地使用了iterrows:

for index, row in PeriodDF.iterrows():
    date = index
    Period = row.loc[row.index[0]]  
    LocationList = row.index[1:]
    print(date, Period)
    for Location in LocationList :
        PeriodDF.loc[(PeriodDF.index == date)&(PeriodDF.Period == Period), Location] = Get_Y(date, Period, Location)

但这需要1个多小时。

必须有一种方法可以更快地在熊猫中做到这一点。

我尝试创建3个数据框,一个是Period的数组,一个是Location的数组,另一个是Date,但不确定如何应用{{} 1}} elementwise,使用每个数据帧的值。

0 个答案:

没有答案