用PY筛选同时间段的2个表格并合并数据

这两天在梳理2个设备采集的温度的时候,发现了数据采集时间不一致,但是需要对比温度数据,只能手动去筛选和清洗数据,比较麻烦, 就写了这个小程序来合并2个csv格式的数据,从而实现数据合并对比分析。

我比较喜欢可视化界面,所以还是用的PySimpleGUI 来做界面:

 

添加2个文件的路径, 然后点击查找即可获取合并数据, 在左下角添加了数据保存;

可以另存为想要的地址和命名;

 上代码:

首先确认已经安装模块:

pip install pandas

pip install PySimpleGUI


import PySimpleGUI as sg
import pandas as pd

# 定义窗口布局
layout = [
    [sg.Text('选择表格文件')],
    [sg.Input(), sg.FileBrowse(key='file_1'), sg.Text('表格1')],
    [sg.Input(), sg.FileBrowse(key='file_2'), sg.Text('表格2')],
    [sg.Button('查找')],
    [sg.Text('查找结果:')],
    [sg.Multiline(size=(60, 10), key='result')],
    [sg.Button('保存结果')]
]

# 创建窗口
window = sg.Window('查找表格数据', layout)

# 读取数据并查找相同时间段的数据
def find_data(file_1, file_2):
    try:
        # 读取表格数据
        df_1 = pd.read_csv(file_1)
        df_2 = pd.read_csv(file_2)

        # 找到相同时间段的数据
        df = pd.merge(df_1, df_2, on='Time', how='inner')

        # 返回查找结果
        return df.to_string(index=False)
    except Exception as e:
        return str(e)

# 事件循环
while True:
    event, values = window.read()
    if event == sg.WINDOW_CLOSED:
        break
    elif event == '查找':
        # 获取用户选择的文件路径
        file_1 = values['file_1']
        file_2 = values['file_2']

        # 查找数据
        result = find_data(file_1, file_2)
        # 在窗口中显示查找结果
        window['result'].update(result)

    elif event == '保存结果':
        # 获取当前显示的数
        file_1 = values['file_1']
        file_2 = values['file_2']
        merged = pd.merge(pd.read_csv(file_1), pd.read_csv(file_2), on='Time', how='inner')
        result = merged.loc[(merged['Time'] >= '00:00:00') & (merged['Time'] <= '23:59:59')]
        table_values = window['result'].get()

        # 将数据保存到新的表格中
        save_file = sg.popup_get_file('保存文件', save_as=True, default_extension='.csv')
        if save_file:
            from pandas import DataFrame
            save_df = DataFrame(result)
            #如果想要把数据全部合并成一列把以上一行的save_df替换成下面一行的内容;
            # save_df = pd.DataFrame([line.split(',') for line in table_values.split('\n')], columns=table_values.split('\n')[0].split(','))
            save_df.to_csv(save_file, index=False)
            sg.popup('保存成功!')

# 关闭窗口
window.close()

强调下时间格式为:00:00:00,不带日期。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dieter.ding

祝老板码来财

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值