python使用平均列生成新列

python使用平均列生成新列,python,pandas,Python,Pandas,我有一个熊猫数据框,其中包含以下数据,显示公司员工每周的工作时间: name week 1 week 2 week 3 week 4... joey 20 15 35 10 thomas 20 10 25 15 mark 30 20 25 10 sal 25

我有一个熊猫数据框,其中包含以下数据,显示公司员工每周的工作时间:

name       week 1     week 2      week 3     week 4...

joey       20         15           35         10
thomas     20         10           25         15
mark       30         20           25         10
sal        25         25           15         20
amy        25         30           20         10
假设数据以相同的方式持续100多周

我想要的是每名员工每两周平均工作小时数, 所以平均工作时间超过两周。如以下数据框所示:

name       weeks 1-2      weeks 2-4...      

joey         17.5           22.5           
thomas       15             20           
mark         25             17.5         
sal          25             17.5           
amy          27.5           15          

我怎样才能做到这一点?正在尝试迭代,但我被卡住了。

您可以通过以下方法实现这一点:

for i in range(0, len(df.columns), 2): 
    df[f'weeks {i+1}-{i+2}'] = df.iloc[:, i:i+1].mean(axis=1) 
这段代码基本上遍历列的数量,步骤大小为2。然后,它选择当前迭代所指示的列(变量
i
)和下一列(
i+1
),对这两列求平均值,并存储在新列中


它假设列的顺序正确。

假设数据在同一列中持续100多周。听起来好像很多,哇,你会有很多专栏吗?从192个专栏开始,非常完美,谢谢。你介意解释一下:df[f'weeks{i+1}-{i+2}']部分是如何工作的吗?字符串前面的“f”是做什么的?我有稍微不同的数据,然后在问题中提出,需要不同的名称列,所以它将有助于了解如何使用此功能。谢谢这些被称为
f-strings
,是在Python的3.6版本中引入的。它们提供了一种在字符串中插入变量的方法。在这种情况下,所发生的情况与以下字符串串联所发生的情况相同:
'weeks'+str(i+1)+'-'+str(i+2)
。您可以在此处了解更多信息,例如: