鱼C论坛

 找回密码
 立即注册
查看: 192|回复: 1

时间索引

[复制链接]
发表于 2024-4-11 19:08:46 | 显示全部楼层 |阅读模式

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

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

x
已知1.xlsx中有列名为flood_start_date和drought_end_date的列,内容格式为1961-07-28,在2.xlsx中存在列名为Year,Mon,Day,PRE的列,相在需要根据1.xlsx中flood_start_date和drought_end_date的列中的时间找2.xlsx前后两个月的数据,要考虑不同月份的天数差异,该如何运用Python实现
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-4-11 19:09:05 | 显示全部楼层
首先,我们需要使用pandas库读取和处理Excel文件。然后,我们可以使用datetime库来进行日期和时间的计算。

下面是实现这个功能的代码:
import pandas as pd
from datetime import datetime, timedelta

# 读取1.xlsx中的数据
df1 = pd.read_excel('1.xlsx')

# 读取2.xlsx中的数据
df2 = pd.read_excel('2.xlsx')

# 转换日期格式为datetime类型
df1['flood_start_date'] = pd.to_datetime(df1['flood_start_date'])
df1['drought_end_date'] = pd.to_datetime(df1['drought_end_date'])

# 创建一个空的DataFrame来存储结果
result = pd.DataFrame()

# 遍历1.xlsx中的每一行
for index, row in df1.iterrows():
    # 获取起始日期和结束日期
    start_date = row['flood_start_date']
    end_date = row['drought_end_date']

    # 计算前两个月的起始日期和结束日期
    start_date_prev = start_date - timedelta(days=2 * 30)
    end_date_prev = end_date - timedelta(days=2 * 30)

    # 根据前两个月的起始日期和结束日期筛选2.xlsx中的数据
    filtered_data = df2[(df2['Year'] >= start_date_prev.year) & (df2['Year'] <= end_date_prev.year) & 
                        (df2['Mon'] >= start_date_prev.month) & (df2['Mon'] <= end_date_prev.month) &
                        (df2['Day'] >= start_date_prev.day) & (df2['Day'] <= end_date_prev.day)]

    # 将筛选出的数据添加到结果中
    result = result.append(filtered_data, ignore_index=True)

# 打印结果
print(result)

请注意,上述代码假设`1.xlsx`和`2.xlsx`文件与代码文件在同一目录下。如果不在同一目录下,请指定正确的文件路径。

此代码通过遍历`1.xlsx`中的每一行,并根据其起始日期和结束日期计算前两个月的起始日期和结束日期。然后,在`2.xlsx`中筛选出处于该时间范围内的数据,并将其添加到结果DataFrame中。最后,打印结果DataFrame。

希望能帮到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-27 09:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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