Return 如果另一列的相应单元格是另一个特定值的一部分,则单元格中的值 Python

Return a value in a cell if the correspondent cell from another column is part of another specific value Python

我有一个有 6 列的 excel sheet。 我想读取该文件并添加另一列,如果在另一列中发现另一个特定文本作为单元格的一部分,则在其中插入特定文本。

我试过:

import csv
import openpyxl
import pandas as pd

#writer = pd.ExcelWriter('testx.xlsx', engine='xlsxwriter')
#writer.save()



#from openpyxl import load_workbook
file = 'testx.xlsx'
#book = load_workbook(file)
#writer = pd.ExcelWriter(file, engine = 'openpyxl')
#writer.book = book
df = pd.read_excel('testx.xlsx')
#writer = pd.ExcelWriter('testx.xlsx')
df['Brand'] = df['Keyword'].map({'o.p.1.':33, 'sebastian':'seb', 'd.p.i':34})
df.to_excel('testx.xlsx')
#writer.save()


workbook  = writer.book
workbook.filename = 'testx.xlsx'

writer.save()
#writer.close()
#delete_files()

但总有不对的地方..

需要Ex输出: 我填充了 A-F 列,我需要自动填充 G 列

z image_count x 提取内容关键词 L_brand 品牌 Z1 2 x Po , Po , N
Z2 1 x D.P.I 指甲油 VERNIS A ONGLES D.P.I 指甲油 VERNIS A ONGLES d.p.i, p.i, d.p.i, p.i, , Y
Z3 1 x O.P.1 指甲油 VERNIS A ONGLES O.P.1 指甲油 VERNIS A ONGLES o.p.1, o.p, o.p.1, , Y

如果我使用 writer,我不会得到错误,但它会检索到空白 sheet

import csv
import openpyxl
import pandas as pd


file = 'testx.xlsx'
df = pd.read_excel(file)
writer = pd.ExcelWriter('testx.xlsx', engine='xlsxwriter')
df['Keyword'] = df['Brand'].map({'o.p.1.':33, 'sebastian':'seb', 'd.p.i':34})
df.to_excel('testx.xlsx')
writer.save()

上面编辑的代码不再抛出错误,但是加载后,当我想打开 excel 文件时,它说有错误,它必须尽可能多地恢复并且检索空白 sheet..

根据您给定的数据,它看起来像您的 Keyword 列包含多个字符串值,而您使用单个值对其进行映射。

在这种情况下,我们可以使用具有用户定义的 apply 函数而不是使用 map 函数

所以这里

import csv
import openpyxl
import pandas as pd

df = pd.read_excel('testx.xlsx')

key_maps = {'o.p.1.':33, 'sebastian':'seb', 'd.p.i':34} # include all 600 combination here 
# I am assuming all keys are in string format 

def myFunc(x):
    key = False
    for word in str(x).split(','):
       if word in key_maps.keys():
           key = True
           break
    return key_maps[word] if key else ""


df['Brand'] = df['Keyword'].apply(myFunc)

df.to_excel('test_result.xlsx')