鱼C论坛

 找回密码
 立即注册
查看: 1935|回复: 4

求大佬指导

[复制链接]
发表于 2023-8-7 16:00:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 火石 于 2023-8-7 16:01 编辑

已知六个人,每人每天有一个分值,构成一个dataframe
图1.png
从第三天起,需要求出每天每个人之前三天分值之和,用python如何编写
图2.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-7 16:00:55 | 显示全部楼层
你可以使用pandas库来处理这个问题。首先,确保你已经安装了pandas库。

首先,你需要创建一个包含六个人每天分值的DataFrame。假设你已经有一个名为df的DataFrame,其中包含列名为'日期'和'分值'的两列。

接下来,你可以使用rolling函数来计算每个人之前三天分值的和。rolling函数可以在指定的窗口大小内进行滚动计算。

下面是一个示例代码:
import pandas as pd

# 创建一个示例DataFrame
data = {'日期': ['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-05', '2021-01-06'],
        '分值': [1, 2, 3, 4, 5, 6]}
df = pd.DataFrame(data)

# 将日期列转换为日期类型
df['日期'] = pd.to_datetime(df['日期'])

# 按日期升序排序
df = df.sort_values('日期')

# 使用rolling函数计算每个人之前三天分值的和
df['前三天分值之和'] = df['分值'].rolling(window=3, min_periods=1).sum()

print(df)

这样,你就可以得到一个新的DataFrame,其中包含了每个人每天之前三天分值的和。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-7 16:01:01 | 显示全部楼层
问题分析:
根据题目描述,已知有六个人的每天分值构成一个DataFrame,需要计算从第三天开始每个人之前三天的分值之和。

解决方法:
我们可以使用pandas库对DataFrame进行操作,通过滑动窗口的方式计算每个人之前三天的分值之和。

以下是具体的代码实现:
import pandas as pd# 创建包含六个人的DataFramedata = {    'Person 1': [5, 2, 4, 6, 3, 8],    'Person 2': [3, 1, 7, 2, 6, 4],    'Person 3': [8, 6, 2, 1, 5, 3],    'Person 4': [4, 5, 3, 9, 2, 7],    'Person 5': [2, 8, 6, 4, 1, 5],    'Person 6': [6, 3, 5, 8, 4, 2]}df = pd.DataFrame(data)# 计算每个人之前三天的分值之和df_sum = df.rolling(4, min_periods=3).sum().shift()# 去掉前两天的NaN值df_sum = df_sum.dropna()print(df_sum)
在上述代码中,我们首先创建了一个包含六个人分值的DataFrame。然后,使用rolling函数与sum函数配合使用,设置窗口大小为4(包括当天),最小观测数为3,计算每个人之前三天的分值之和,并通过shift函数将结果向上平移一行,实现从第三天开始统计。最后,通过dropna函数去掉前两天产生的NaN值。

请尝试运行以上代码,查看计算出的每个人之前三天的分值之和。如有其他问题,请随时提问。

如果回答对你有帮助,请给我一个最佳答案!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-7 16:01:02 | 显示全部楼层
你可以使用pandas库来处理这个问题。下面是一个示例代码,可以计算每天每个人之前三天分数之和:
import pandas as pd

# 创建示例数据
data = {
    'Date': ['2023-08-01', '2023-08-02', '2023-08-03', '2023-08-04', '2023-08-05', '2023-08-06'],
    'Person1': [5, 3, 2, 4, 1, 6],
    'Person2': [7, 2, 4, 3, 6, 9],
    'Person3': [1, 6, 3, 2, 5, 4],
    'Person4': [4, 3, 5, 1, 2, 7],
    'Person5': [2, 4, 6, 7, 1, 3],
    'Person6': [6, 5, 1, 6, 4, 2]
}

df = pd.DataFrame(data)

# 转换日期列为日期类型
df['Date'] = pd.to_datetime(df['Date'])

# 设置日期列为索引
df.set_index('Date', inplace=True)

# 计算每天每个人前三天分数之和
for i in range(2, len(df)):
    for person in df.columns:
        df.loc[df.index[ i], person] = df[person][i-2:i+1].sum()

print(df)

运行上述代码,你将得到一个包含每天每个人之前三天分值之和的DataFrame。

请根据实际数据的格式进行相应的调整,确保日期列已正确转换为日期类型,并且将日期列设置为索引。然后使用嵌套循环遍历每天和每个人,在每个位置上取出前三天的分数并求和,将结果填充回DataFrame中。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-7 23:25:15 | 显示全部楼层

回帖奖励 +5 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 08:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表