|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
放了一个附件,请求大佬们帮助。
内容是这样的。文本表格格式如下:
管线号 焊缝编号 焊接类型 壁厚 材质
天然气80-NG-5310-10001-A0BE31-N(GC2) 1 对焊 3.05 S31603&S31603
天然气80-NG-5310-10001-A0BE31-N(GC2) 2 对焊 3.05 20
天然气80-NG-5310-10001-A0BE31-N(GC2) 3 对焊 3.05 S31603
天然气80-NG-5310-10001-A0BE31-N(GC2) 4 对焊 3.05 S31603&S31603
天然气80-NG-5310-10001-A0BE31-N(GC2) 5 对焊 3.05 S31603&S31603
天然气80-NG-5310-10001-A0BE31-N(GC2) 6 对焊 3.05 S31603&S31603
天然气80-NG-5310-10001-A0BE31-N(GC2) 7 对焊 3.05 S31603&S31603
污水池甲烷气管线50-PG1-5310-10001-A0BE31-N(GC2) 1 对焊 3.05 S31603&S31603
我需要做到的是这样:
根据列"焊接类型","材质",“壁厚”的值依次判断,我用的pycharm,第三方用的pandas。
判断原则如下
1,如果是对焊,并且材质的文本内容包含“12Cr”,如果“壁厚”大于13,列“工艺卡编号”的值为"HKB12-06"
2,如果是对焊,并且材质的文本内容包含“12Cr”,如果“壁厚”大于10,列“工艺卡编号”的值为"HKB12-05"
3,如果是对焊,并且材质的文本内容包含“12Cr”,如果“壁厚”大于8,列“工艺卡编号”的值为"HKB12-04"
4,如果是承插焊,并且材质的文本内容包含“12Cr”,如果“壁厚”大于5.5,列“工艺卡编号”的值为"HKC12-03"
5,如果是承插焊,并且材质的文本内容包含“12Cr”,如果“壁厚”大于3,列“工艺卡编号”的值为"HKC12-02"
1,如果是对焊,并且材质的文本内容包含“20”,如果“壁厚”大于13,列“工艺卡编号”的值为"HKB20-06"
2,如果是对焊,并且材质的文本内容包含“20”,如果“壁厚”大于10,列“工艺卡编号”的值为"HKB20-05"
3,如果是对焊,并且材质的文本内容包含“20”,如果“壁厚”大于8,列“工艺卡编号”的值为"HKB20-04"
4,如果是承插焊,并且材质的文本内容包含“20,如果“壁厚”大于5.5,列“工艺卡编号”的值为"HKC20-03"
5,如果是承插焊,并且材质的文本内容包含“20”,如果“壁厚”大于3,列“工艺卡编号”的值为"HKC20-02"
以上条件都是一个成立了就不再执行其他判断
求助怎么实现呢
当然可以使用 `apply` 和自定义函数来实现这个需求。以下是一个示例代码,展示如何根据不同条件填充“工艺卡编号”列:
import pandas as pd
# 创建示例数据框
data = {
'管线号': [
'天然气80-NG-5310-10001-A0BE31-N(GC2)',
'天然气80-NG-5310-10001-A0BE31-N(GC2)',
'天然气80-NG-5310-10001-A0BE31-N(GC2)',
'天然气80-NG-5310-10001-A0BE31-N(GC2)',
'天然气80-NG-5310-10001-A0BE31-N(GC2)',
'天然气80-NG-5310-10001-A0BE31-N(GC2)',
'天然气80-NG-5310-10001-A0BE31-N(GC2)',
'污水池甲烷气管线50-PG1-5310-10001-A0BE31-N(GC2)'
],
'焊缝编号': [1, 2, 3, 4, 5, 6, 7, 1],
'焊接类型': ['对焊', '对焊', '对焊', '对焊', '对焊', '对焊', '对焊', '对焊'],
'壁厚': [3.05, 3.05, 3.05, 3.05, 3.05, 3.05, 3.05, 3.05],
'材质': ['S31603&S31603', '20', 'S31603', 'S31603&S31603', 'S31603&S31603', 'S31603&S31603', 'S31603&S31603', 'S31603&S31603']
}
df = pd.DataFrame(data)
# 定义填充“工艺卡编号”的函数
def fill_process_card(row):
if row['焊接类型'] == '对焊' and '12Cr' in row['材质']:
if row['壁厚'] > 13:
return 'HKB12-06'
elif row['壁厚'] > 10:
return 'HKB12-05'
elif row['壁厚'] > 8:
return 'HKB12-04'
elif row['焊接类型'] == '承插焊' and '12Cr' in row['材质']:
if row['壁厚'] > 5.5:
return 'HKC12-03'
elif row['壁厚'] > 3:
return 'HKC12-02'
elif row['焊接类型'] == '对焊' and '20' in row['材质']:
if row['壁厚'] > 13:
return 'HKB20-06'
elif row['壁厚'] > 10:
return 'HKB20-05'
elif row['壁厚'] > 8:
return 'HKB20-04'
elif row['焊接类型'] == '承插焊' and '20' in row['材质']:
if row['壁厚'] > 5.5:
return 'HKC20-03'
elif row['壁厚'] > 3:
return 'HKC20-02'
return None
# 应用函数填充“工艺卡编号”列
df['工艺卡编号'] = df.apply(fill_process_card, axis=1)
print(df)
这个代码定义了一个 `fill_process_card` 函数,根据你提供的条件来填充“工艺卡编号”列。然后使用 `apply` 方法将这个函数应用到数据框的每一行。这样可以确保代码逻辑清晰且易于理解。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|
|