从多个csv文件中添加相同的行,但在pandas的时间范围内通过配方进行分类

问题描述 投票:0回答:1

我每月有 20 到 300 个 csv 文件,我需要从文件中获取总体积 [m3],但考虑到所需数据的性质,我需要能够对 csv 的总和进行分类一个月内的配方名称下的文件,可以通过在文件夹中设置月份的csv文件来固定时间范围,但需要读取配方名称并与总体积[m3]排序

目前我还没有找到一种方法来做到这一点,我目前所做的只是读取文件......

def read_csv_files(folder_path):
    # Get a list of all CSV files in the specified folder
    csv_files = [f for f in os.listdir(folder_path) if f.endswith(".csv")]

    for csv_file in csv_files:
        file_path = os.path.join(folder_path, csv_file)
        read_csv_file(file_path)

def read_csv_file(file_path):
    test = pd.read_csv(file_path, sep='";', header=[0, 13], nrows=0, engine='python', encoding='ANSI')
    print(test)

    
folder_path = "C:\\Users\\nw\\Documents\\Mini projects\\CSV"
read_csv_files(folder_path)

我的csv文件是这样的:

配方;水 批次号;99 订单号;3 序列号;F1200 1406545 公司;卡 买方; 卡车号; 职位名称;

批量开始;DT#2023-10-30-12:05:01 批次结束;DT#2023-10-30-12:07:57 混合时间[s];12 行为。 WCT;0.0 设置页数。 WCT;0.0 总体积[m];0.1 总重量[kg];2.2 具体型号; 强度等级; 稠度范围; 最大的颗粒; 水泥类型; 添加剂; 混合物; 最后一批订单;TRUE 手动激活;TRUE 警报: ERROR_RecycleValve_PosMixerNotOn ERROR_bDOSING_TOLERANCE_WATER1 额外文本;

尝试将其添加到从此处的另一篇文章中找到的列表/数组中,但由于我的数据是以与普通 csv 不同的方式制作的,所以我没有从中真正得到什么

我已经厌倦了遵循这里另一篇文章的示例,但是按照我的 csv 文件的制作方式,它并没有使这种方式成为可能

python pandas csv sum
1个回答
0
投票

如果没有数据样本,真的很难提供帮助。

首先您需要创建一个新的月份列。我假设您从“批量开始”中获取它,并且格式是字符串:

df['month'] = df['Batch start'].str.split('-')[1]

现在您可以使用

groupby
按食谱和月份求和:

df.groupby(['Recipe', 'Month']).sum()

让我知道这是否对您有用

© www.soinside.com 2019 - 2024. All rights reserved.