【问题标题】:Pandas Dataframe Complex CalculationPandas 数据框复杂计算
【发布时间】:2015-06-22 10:38:13
【问题描述】:

我有以下数据框,df:

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

我想编写执行以下操作的代码:

当前年份的引用/前两年的总Pubs总和

我想要创建一个名为 Impact Factor 的新列,并按如下方式生成它:

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'])

【问题讨论】:

    标签: python python-2.7 pandas dataframe


    【解决方案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_sumshift 来生成前 2 年的总和,然后我们将引用值除以该值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2016-09-11
      • 2018-05-01
      • 2016-11-12
      相关资源
      最近更新 更多