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)
。您可以在此处了解更多信息,例如: