excel相关的python应用
这个问题我觉得很复杂啊1.我有一个源文件的excel,首先我需要识别出特定的几列有不为0的行,把他们提取归并到一个新的excel形成一个统计的excel,统计具体有多少焊缝,规格,寸口,对应的工艺卡编号这类信息(提取列的时候不是整行提取的,根据列名称提取指定的某几列)。这是第一步。
2.根据统计的excel,按照焊接材质,工艺卡编号信息,分类统计焊口总数。
3.根据统计的excel里针对列“管线号”,生成每条管线的焊接工艺卡的excel,自动生成根据管线号里含有的工艺卡编号,自动生成sheet到工艺卡,并根据统计excel中信息,填充相关信息到工艺卡。
挺复杂的,能不能指导下比如我该看哪方面的blibli视频?我装了pycharm,也会pip install,装了pandas,openpyxl这些库,对具体怎么连接一头雾水。 你最好是发出原表 并标注 期望操作 https://www.bilibili.com/video/BV1Bv4y1K74A 如果表格过于庞大,先精简一下再发出来 谢谢各位大哥,感觉表述很头大,ai也看不懂。。。现在哪是写程序,就是描述诉求,发ai然后测试下再调整,自己写,那写不出来。。。 颂风侯 发表于 2024-7-22 09:27
谢谢各位大哥,感觉表述很头大,ai也看不懂。。。现在哪是写程序,就是描述诉求,发ai然后测试下再调整,自 ...
电脑只是辅助人类来完成一些有规律的事件 如果你的工作没啥规律性就只能手工操作 这个是AI写的,关键我是要把一个excel里焊缝数量,焊缝数量2两个列的数值非0的,分别提取对应的工艺卡和材质这些,列数是一样的,再去对同样的工艺卡和焊缝规格合并分项总数,按管线号排序
最后再根据对应的工艺卡编号去调取工艺卡面板,根据管线号生成对应的工艺卡,并自动填充相应数据对对应的工艺卡
---------------
import pandas as pd
def process_excel(input_file, output_file):
# 读取Excel文件
df = pd.read_excel(input_file)
# 提取焊缝数量不为0的行
non_zero_weld1 = df != 0]
non_zero_weld2 = df != 0]
# 合并两个子集,根据管线号、焊缝种类和工艺卡编号进行合并
merged_df = pd.merge(non_zero_weld1, non_zero_weld2, on=['管线号', '焊缝种类', '工艺卡编号'], how='outer')
# 对相同的焊缝数量进行求和
merged_df['焊缝数量'] = merged_df['焊缝数量'].fillna(0) + merged_df['焊缝数量2'].fillna(0)
# 删除不需要的列
merged_df.drop(['焊缝数量2'], axis=1, inplace=True)
# 按管线号排序
merged_df.sort_values(by=['管线号'], inplace=True)
# 保存到新的Excel文件
merged_df.to_excel(output_file, index=False)
if __name__ == "__main__":
input_file = "input.xlsx"
output_file = "output.xlsx"
process_excel(input_file, output_file)
这段代码首先导入了pandas库,然后定义了一个名为process_excel的函数,该函数接受输入文件名和输出文件名作为参数。函数内部首先读取输入的Excel文件,然后分别提取焊缝数量不为0和焊缝数量2不为0的行。接下来,将这两个子集按照管线号、焊缝种类和工艺卡编号进行合并,并对相同的焊缝数量进行求和。最后,删除不需要的列,并按照管线号对结果进行排序,然后将结果保存到新的Excel文件中。 颂风侯 发表于 2024-7-22 09:36
这个是AI写的,关键我是要把一个excel里焊缝数量,焊缝数量2两个列的数值非0的,分别提取对应的工艺卡和材 ...
ai也不知道你的表格长啥样
所以他的回复你是可以忽略不计 import pandas as pd
def process_excel(input_file, output_file):
# 读取Excel文件
df = pd.read_excel(input_file)
# 根据焊缝数量不为0的行提取指定列
df1 = df != 0][['管线号', '焊缝种类', '工艺卡编号']]
df2 = df != 0][['管线号', '焊缝种类2', '工艺卡编号2']]
# 重命名焊缝种类2和工艺卡编号2的列名,以便后续合并
df2.rename(columns={'焊缝种类2': '焊缝种类', '工艺卡编号2': '工艺卡编号'}, inplace=True)
# 合并两个数据框
merged_df = pd.concat()
# 对相同的焊缝种类和工艺卡编号进行分组求和
result_df = merged_df.groupby(['管线号', '焊缝种类', '工艺卡编号']).sum().reset_index()
# 对结果按照管线号进行排序
result_df.sort_values(by='管线号', inplace=True)
# 将结果写入新的Excel文件
result_df.to_excel(output_file, index=False)
if __name__ == "__main__":
input_file = "原始数据.xlsx"
output_file = "提取结果.xlsx"
process_excel(input_file, output_file)
AI写的这个代码看起来比较对了,运行出错呢,帮忙看下什么问题呢 颂风侯 发表于 2024-7-22 10:04
import pandas as pd
def process_excel(input_file, output_file):
无样本文件无真相
哪个ai要是盲猜能写出完整的针对你的需求的代码那它就不是ai而是神i 原始数据的格式如图
管线号 焊缝种类 工艺卡编号 焊缝数量 焊缝种类2 工艺卡编号2 焊缝数量2
p1 bwd gy01 1
p2 swf gy02 1
p8 olet gy03 1
p12 olet gy03 1 swf gy02 1
p2 swf gy02 1 swf gy02 1
p8 olet gy03 1
p8 olet gy03 1 swf gy02 1
p1 bwd gy01 1
需要统计把焊缝种类2,工艺卡编号2也汇总到焊缝种类,工艺卡编号一起统计相同管线号,焊缝种类,工艺卡编号的焊缝数量汇总
管线号 焊缝种类 工艺卡编号 焊缝数量
p1 bwd gy01 2
p12 olet gy03 1
p12 swf gy02 1
p2 swf gy02 3
p8 olet gy03 3
p8 swf gy02 1
颂风侯 发表于 2024-7-22 10:39
原始数据的格式如图
管线号 焊缝种类 工艺卡编号 焊缝数量 焊缝种类2 工艺卡编号2 焊缝数量2
p1 bwd gy0 ...
可以打包rar的,这样写太乱了
你发的第一个列数和字段数都对不上 大哥,rar在哪里发出呢,唉真找不到 颂风侯 发表于 2024-7-22 10:39
原始数据的格式如图
管线号 焊缝种类 工艺卡编号 焊缝数量 焊缝种类2 工艺卡编号2 焊缝数量2
p1 bwd gy0 ...
你这个表格是自己设计的 还是说 其它人给你的
这个表格设计不合理,导致后期制作 有难度啊 wp231957 发表于 2024-7-22 11:04
你这个表格是自己设计的 还是说 其它人给你的
这个表格设计不合理,导致后期制作 有难度啊
最终 形成这个 就对了吧
>>> result
管线号焊缝种类焊缝数量
0 p1 bwd 2.0
1p12olet 1.0
2p12 swf 1.0
3 p2 swf 3.0
4 p8olet 3.0
5 p8 swf 1.0
>>> 本帖最后由 wp231957 于 2024-7-22 12:32 编辑
颂风侯 发表于 2024-7-22 10:53
大哥,rar在哪里发出呢,唉真找不到
import pandas as pd
#导入数据
dfa = pd.read_excel('11.xlsx')
#获取后面几列的 有效数据
s=dfa["焊缝种类2"].notnull()
dfc=dfa.loc.iloc[:,]#形成一个新的df由原df的第一列 和后面的三列组成
#删除原始df的后面三列
dfa.drop(dfa.columns[-3:],axis=1,inplace=True)
#对dfc的列进行重命名 以保证和dfa 列名一致,以便下一步合并操作
dfc.columns = dfc.columns.str.replace('2', '')
#对dfa dfc 进行合并
dfd=pd.concat(,axis=0)
#删除空行
dfd = dfd.dropna(axis=0)
#对新的dfd进行分组操作
result = dfd.groupby(['管线号','焊缝种类',"工艺卡编号"])['焊缝数量'].sum().reset_index()
#对分组值进行取整操作
result["焊缝数量"]= result["焊缝数量"].round().astype(int)
#输出至新表
result.to_excel('output.xlsx', index=False)
print("game over") 大哥真幽默,gameov{:5_109:} 学习下,我现在还是回头去看pandas视频了,基础没打好。谢谢老大 颂风侯 发表于 2024-7-22 13:26
学习下,我现在还是回头去看pandas视频了,基础没打好。谢谢老大
excel还是用VBA吧
页:
[1]