王大可2000 发表于 2023-10-13 15:29:31

合并年月日相同的数据

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

isdkz 发表于 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文件中。

陶远航 发表于 2023-10-13 15:30:08

要完成这个任务,你可以使用Python的pandas库,它是一个强大的数据处理和分析工具。以下是一个可能的解决方案:

import pandas as pd
import os

# 获取文件夹内所有文件
folder_path = 'your_folder_path'# 请替换为你的文件夹路径
files =

# 创建一个空的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
如果问题已经解决,请设置最佳答案

Mike_python小 发表于 2023-10-13 15:30:58

为了将年、月、日相同的数据进行合并并保存到新的Excel文件中,您可以使用Python中的pandas库来处理和操作数据。以下是一种可能的实现方式:


import pandas as pd
import 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()

# 保存合并后的数据到新的Excel文件
merged_data.to_excel("保存文件路径/合并数据.xlsx", index=False)# 将"保存文件路径"替换为实际的保存路径


请确保将其中的"文件夹路径"替换为包含要处理的Excel文件的文件夹路径,将"保存文件路径"替换为您想要保存合并后数据的文件路径。

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

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

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

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}

王大可2000 发表于 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()

# 按年月日分组并对其他列求和
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)# 将"保存文件路径"替换为实际的保存路径
页: [1]
查看完整版本: 合并年月日相同的数据