2015-06-22 2 views
2

У меня есть следующие dataframe, ДФ:Панды Dataframe комплекс Расчет

 Year totalPubs ActualCitations 
0 1994   71  191.002034 
1 1995   77  2763.911781 
2 1996   69  2022.374474 
3 1997   78  3393.094951 

Я хочу, чтобы написать код, который будет делать следующее:

цитирований CURRENTYEAR/Сумма totalPubs двух предыдущих лет

Я хочу что-то, чтобы создать новый столбец под названием импакт-фактор, и генерировать его следующим образом:

for index, row in df.iterrows(): 
    if row[0]>=1996: 
     df.at[index,'Impact Factor'] = df.at[index, 'ActualCitations']/(df.at[index-1, 'totalPubs'] + df.at[index-2, 'totalPubs']) 

ответ

1

Я считаю, что следующий делает то, что вы хотите:

In [24]: 
df['New_Col'] = df['ActualCitations']/pd.rolling_sum(df['totalPubs'].shift(), window=2) 
df 

Out[24]: 
    Year totalPubs ActualCitations New_Col 
0 1994   71  191.002034  NaN 
1 1995   77  2763.911781  NaN 
2 1996   69  2022.374474 13.664692 
3 1997   78  3393.094951 23.240376 

Так выше использует rolling_sum и shift генерировать предыдущие 2 года сумму, и мы затем разделить значение цитаты по этому значению.

Смежные вопросы