鱼C论坛

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

合并年月日相同的数据

[复制链接]
发表于 2023-10-13 15:29:31 | 显示全部楼层 |阅读模式

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

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

x
运用Python对文件夹内所有文件中第一列到第九列分别为年、月、日、PREC、EVAP、RUNOFF、BASEFLOW、WDEW 和 SOIL_LIQ ,将年、月、日相同的PREC、EVAP、RUNOFF、BASEFLOW、WDEW 和 SOIL_LIQ 分别相加,将年、月、日及对应的结果保存新的Excel文件中

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2023-10-13 15:29:50 | 显示全部楼层
你可以使用pandas库来完成这个任务。以下是一个示例代码:
import pandas as pd
import glob

# 读取所有csv文件,合并成一个DataFrame
path = r'文件夹路径/*.csv'
all_files = glob.glob(path)
df = pd.concat((pd.read_csv(f) for f in all_files))

# 将年、月、日设为索引
df['date'] = pd.to_datetime(df[['年', '月', '日']])
df.set_index('date', inplace=True)

# 按年、月、日分组,对PREC、EVAP、RUNOFF、BASEFLOW、WDEW 和 SOIL_LIQ求和
df_sum = df.groupby(pd.Grouper(freq='D')).agg({'PREC': 'sum', 'EVAP': 'sum', 'RUNOFF': 'sum', 'BASEFLOW': 'sum', 'WDEW': 'sum', 'SOIL_LIQ': 'sum'})

# 保存到新的Excel文件中
df_sum.to_excel('新文件名.xlsx')

这段代码首先使用glob库获取文件夹中所有csv文件的路径,然后使用pandas库的concat函数将它们合并成一个DataFrame。接着将年、月、日三列合并为一个日期列,并将其设为索引。然后使用groupby函数按日分组,并对PREC、EVAP、RUNOFF、BASEFLOW、WDEW 和 SOIL_LIQ求和。最后将结果保存到一个新的Excel文件中。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-13 15:30:08 | 显示全部楼层
要完成这个任务,你可以使用Python的pandas库,它是一个强大的数据处理和分析工具。以下是一个可能的解决方案:
import pandas as pd
import os

# 获取文件夹内所有文件
folder_path = 'your_folder_path'  # 请替换为你的文件夹路径
files = [f for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f))]

# 创建一个空的DataFrame来存储所有数据
all_data = pd.DataFrame()

# 读取每个文件并将它们添加到all_data中
for file in files:
    file_path = os.path.join(folder_path, file)
    data = pd.read_excel(file_path)
    all_data = all_data.append(data, ignore_index=True)

# 将年、月、日设置为索引,然后对其他列进行求和
all_data.set_index(['年', '月', '日'], inplace=True)
result = all_data.groupby(level=['年', '月', '日']).sum()

# 将结果保存到新的Excel文件中
result.to_excel('result.xlsx')

这个脚本首先读取文件夹中的所有文件,并将它们的数据添加到一个DataFrame中。然后,它将年、月、日设置为索引,并对相同日期的其他列进行求和。最后,它将结果保存到一个新的Excel文件中。

请注意,这个脚本假设所有文件都是Excel文件,并且它们的列名和顺序都是一样的。如果你的文件有不同的格式或结构,你可能需要修改这个脚本以适应你的具体情况。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-13 15:30:58 | 显示全部楼层
为了将年、月、日相同的数据进行合并并保存到新的Excel文件中,您可以使用Python中的pandas库来处理和操作数据。以下是一种可能的实现方式:
import pandas as pdimport glob# 获取文件夹下所有文件的路径file_paths = glob.glob("文件夹路径/*.xlsx")  # 将"文件夹路径"替换为实际的文件夹路径# 创建空的DataFrame来存储合并后的数据merged_data = pd.DataFrame()# 遍历每个文件进行数据合并for file_path in file_paths:    # 读取文件数据    data = pd.read_excel(file_path)        # 按年月日分组并对其他列求和    grouped_data = data.groupby(['年', '月', '日']).agg({        'PREC': 'sum',        'EVAP': 'sum',        'RUNOFF': 'sum',        'BASEFLOW': 'sum',        'WDEW': 'sum',        'SOIL_LIQ': 'sum'    }).reset_index()        # 合并到总的数据集中    merged_data = pd.concat([merged_data, grouped_data])# 保存合并后的数据到新的Excel文件merged_data.to_excel("保存文件路径/合并数据.xlsx", index=False)  # 将"保存文件路径"替换为实际的保存路径
请确保将其中的"文件夹路径"替换为包含要处理的Excel文件的文件夹路径,将"保存文件路径"替换为您想要保存合并后数据的文件路径。

此代码将遍历指定文件夹中的所有Excel文件,将它们读取为DataFrame,并按照年、月、日分组。然后,使用groupbyagg函数对其他列进行求和操作,最后将合并后的数据保存到新的Excel文件中。

请注意,您需要安装pandas库并替换文件夹路径和保存文件路径来适应您的实际情况。

希望对您有所帮助!如有任何疑问,请随时追问。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2023-10-13 16:27:16 | 显示全部楼层
import pandas as pd
import glob

# 获取文件夹下所有文件的路径
file_paths = glob.glob("F:/新建文件夹/try/efg/*.xlsx")  # 将"文件夹路径"替换为实际的文件夹路径
# 创建空的DataFrame来存储合并后的数据
merged_data = pd.DataFrame()
# 遍历每个文件进行数据合并
for file_path in file_paths:
    # 读取文件数据
    data = pd.read_excel(file_path)
    # 合并到总的数据集中
    merged_data = pd.concat([merged_data, data])

# 按年月日分组并对其他列求和
grouped_data = merged_data.groupby(['年', '月', '日']).agg({
    'PREC': 'sum',
    'EVAP': 'sum',
    'RUNOFF': 'sum',
    'BASEFLOW': 'sum',
    'WDEW': 'sum',
    'SOIL_LIQ': 'sum'
}).reset_index()
# 保存合并后的数据到新的Excel文件
grouped_data.to_excel("F:/新建文件夹/try/合并数据.xlsx", index=False)  # 将"保存文件路径"替换为实际的保存路径
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 08:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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